可能是一個簡單的解決方案之後,但我堅持與它的晚... :)jQuery的:抓住一個圖像的寬度增加圖像
$j('#thisImage').html('<img src="image.jpg" id="box" />');
var imgWidth = $j('#box').width();
當我做一個console.log(imgWidth)
它返回0
...
我很確定這是因爲.html(...)
在調用width(...)
調用之前未完全完成。我已經用緩存的圖像進行了測試,它工作正常,並給我正確的圖像寬度...但那些沒有緩存返回0.
所以我正在尋找一個很好的解決方案,等待.html(...)
電話完成後再繼續我的.width(...)
致電
任何幫助,非常感謝。謝謝!
更新1
使用下面CMS的答案... (這可以幫助大家瞭解我的困境)
如果我這樣做:
var imgWidth = 0;
$j('<img src="image.jpg" id="box" />').appendTo("#thisImage").load(function() {
imgWidth = $j('#box').width();
//my first log
console.log("Width 1: " + imgWidth);
});
//my second log
console.log("Width 2: " + imgWidth);
if (imgWidth > 100) {
//do something
}
然後//my second log
作爲.load
返回//my first log
之前還沒有完成完成...
因此我if
語句總是false
作爲imgWidth
總是0
...
即至.load
完成......但隨後一切都太遲了......
更新2:看到我所看到
使用瑞安的回答修改...
轉到jsbin.com - >包括從下拉菜單「jQuery的」 - >在的Javascript標籤更換W /下面,然後點擊輸出選項卡
function loadImg(url, func) {
var img = new Image();
img.onload = func;
img.src = url;
return img;
}
$(document).ready(function() {
var myWidth = 0;
var myImg = loadImg("http://sstatic.net/so/img/logo.png", function() {
myWidth = $(this).width();
$('#hello').append("Show Me First: " + myWidth + "<br />");
});
$(myImg).appendTo("body");
if(myWidth > 0) {
$('#hello').append("Success!");
} else {
$('#hello').append("Show Me Second: " + myWidth + " <- BOO! Out of Order! <br />");
}
});
沒有骰子...仍然不能夠足夠早的漸變寬度...請參閱上面的更新2 – luckykind 2009-11-30 16:21:10
好的...不是我要用於此實例的解決方案,但是您的編輯可幫助我更好地理解該過程並學會如果我將來需要這個技巧...謝謝! – luckykind 2009-11-30 18:02:38