javascript - jQuery width() 和 height() 对于 img 元素返回 0

标签 javascript jquery

因此,一旦我收到带有图像元数据的 AJAX 调用的响应,我就会创建一个新的图像元素:

var loadedImageContainter = $('<div class="loaded-image-container"></div>');
var image = $('<img src="' + file.url + '" alt="">');
loadedImageContainter.append(image);
$('.loading-image').replaceWith(loadedImageContainter);
var width = image.width();
var height = image.height();
console.log(width);
console.log(height);

尽管图像大小为 30 x 30 像素并且在页面上正确显示,但 width() 和 height() 函数返回 0。我需要获取它的尺寸以便绝对定位图像。

最佳答案

您需要等到图像加载后才能访问宽度和高度数据。

var $img = $('<img>');

$img.on('load', function(){
  console.log($(this).width());
});

$img.attr('src', file.url);

或者使用纯 JS:

var img = document.createElement('img');

img.onload = function(){
  console.log(this.width);
}

img.src = file.url;

此外,在读取宽度和高度值之前,您不需要将图像插入到 DOM 中,因此您可以保留 .loading-image 替换,直到计算完所有正确的位置。

关于javascript - jQuery width() 和 height() 对于 img 元素返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084374/

相关文章:

php - Jscrollpane 在底部初始化

javascript - 达到最大长度限制时更改输入字段样式

Jquery 使用复选框选择表行

javascript - jquery访问所有具有id属性的元素

javascript - 只允许ajax上传图片

Javascript 性能 : How to check what is slowing down the page?

javascript - 通过javascript DOM概念在html中分配id

javascript - 如何用jquery延迟函数的执行?

javascript - 如何根据 SRC 选择 iFrame 并添加类

javascript - 如何使用 webpack 排除 "node_modules"内的 css 文件?