我没有JavaScript知识。我正在尝试延迟$('#image').reel
代码,直到加载图像,这样我才能获得图像宽度值。
stitched: imgwidth,
loops: false,
frames: 30,
frame: 1,
wheelable: false
// speed: 0,
// timeout: 1
});
function imageReel() {
$('#image').empty();
var image = '<img id="image" src=\'images/' + arrReel[imgcount] + '.png\' width="1000" height= "700" />';
$('#image-wrapper').html(image);
$('#image').reel({
stitched: imgwidth,
loops: false,
frames: 30,
frame: 1,
wheelable: false
// speed: 0,
// timeout: 1
});
console.log(imgwidth);
}
根据第一个答案尝试1
$('#image').empty();
// var image = '<img id="image" src=\'images/'+arrReel[imgcount]+'.png\' width="1000" height= "700" />';
$(function(){
image=new Image();
image = '<img id="image" src=\'images/'+arrReel[imgcount]+'.png\' width="1000" height= "700" />';
image.onload=function(){
$('#image-wrapper').html(image);
$('#image').reel({
stitched: imgwidth,
loops: false,
frames: 30,
frame: 1,
wheelable: false,
// speed: 0,
// timeout: 1
});
};
$('body').append(image);
});
结果。仍然给我0宽度加上创建多个图像
根据kilian的回答尝试2
<div id="image-wrapper"><img id="image" src='images/outsidedark.png' width="1000" height= "700" onload="someFunction()" /></div>
function someFunction()
{
console.log(imgwidth);
$('#image').reel({
// stitched: 3208,
stitched: imgwidth,
loops: false,
frames: 30,
frame: 1,
wheelable: false,
// speed: 0,
// timeout: 1
});
}
结果图像不断加载。因为插件可能,但我认为我需要onload只加载该函数一次并加载它多次。宽度仍然是0,并且由于控制台日志0保持显示,就像卡在无限循环中一样。
答案 0 :(得分:2)
不确定什么是reel
jquery插件(是插件吗?)...但是下面的代码显示了真实的图像宽度和高度。
$(function(){
var image=new Image();
image.src='http://www.google.com/images/srpr/logo4w.png';
image.onload=function(){
console.log($(this).height());
console.log($(this).width());
};
$('body').append(image);
});
我希望这会有所帮助。
答案 1 :(得分:1)
使用image.onload = function () { //your code here }
应该有效,但我注意到在某些浏览器中(例如Chrome
),如果浏览器缓存图像,则onload
事件不再触发。
<强>更新强>
经过一番研究后我发现this jQuery plugin解决了浏览器缓存图像的问题。此外,它是跨浏览器的。试一试。
答案 2 :(得分:0)
您应该使用load()
事件。
$(window).load(function(){
// your code here
});
答案 3 :(得分:0)
将onload事件附加到图像元素。
<img onload="someFunction()" ... >
function someFunction() {
// image.reel part
}