如何获得动态添加图像的宽度和高度?
问题描述:
我有一个动态添加一些img标签的真正宽度和高度的问题。这里是我的代码:如何获得动态添加图像的宽度和高度?
var imgcont = $("<img src='' /> ");
imgcont.css("display","none").appendTo("body");`
$("div#lightbox ul").on("click","li", function(){
var source = $(this).children("img").attr("src");
console.log(imgcont.attr("src",source).width());
})`
如果我点击了我第一次得到的宽度和高度正确的价值观,但如果我点击第二次,我得到了以前单击元素的值。为了获得正确的值,我必须再次点击相同的元素。
如何在第一次点击时获得正确的img宽度和高度值?
答
$("div#lightbox ul").on("click", "li", function() {
var source = $(this).children("img").attr("src");
imgcont.attr("src", source).load(function() { // after load finish
// get width
console.log(this.width); // according to @Alnitak comment
});
})
答
您必须等到图像加载完成后才能访问其尺寸。
抓住图像的onload
事件来处理。
imgcont.on('load', function() {
console.alert(this.width);
});
注意使用this.width
如果你想获得的图像的实际宽度属性,不它的屏幕尺寸。他们可能不一样。
+0
我该怎么做,我刚刚学会的JavaScript最近我是不是那个熟悉的语言 – user1525474 2012-07-14 17:17:16
+0
@ user1525474看到编辑答案 – Alnitak 2012-07-14 17:17:52
你不应该使用'.WIDTH()'上''
。 –
Alnitak
2012-07-14 17:21:25
@Alnitak谢谢先生,明白了。 – thecodeparadox 2012-07-14 17:21:53
那么我应该使用什么来获得宽度? – user1525474 2012-07-14 17:25:05