2012-07-14 110 views
2

我有一個動態添加一些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寬度和高度值?

回答

1
$("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 
    }); 
}) 
+0

你不應該使用'.WIDTH()'上''。 – Alnitak 2012-07-14 17:21:25

+0

@Alnitak謝謝先生,明白了。 – thecodeparadox 2012-07-14 17:21:53

+0

那麼我應該使用什麼來獲得寬度? – user1525474 2012-07-14 17:25:05

1

您必須等到圖像加載完成後才能訪問其尺寸。

抓住圖像的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