我面临的问题是,在我将div(每个div一个)中的一堆图像附加到容器(div)之后,我没有得到onload函数..
这是一个包含一堆变量的循环
$('#container').append('<div class="tile" style="position:absolute; top:'+(i*size)+'px; left:'+(j*size)+'px; width:'+size+'px; height:'+size+'px; overflow:hidden;" ><img src="'+map[i][j]+'"/></div>');
所有变量都很好,所有图像都正确加载,但这种方法无法正常工作
$('.tile img').live('load', function(){
console.log("loaded");
});
或
$('.tile img').on('load', function(event){
console.log("loaded");
});
我尝试过更新的.on jQuery函数,但没有去..
编辑: [+]添加.on代码(两个函数在文档就绪后放在右上角)
答案 0 :(得分:9)
更新:我玩了一下,以下策略也适用于新创建的图像上的加载事件。首先,我创建图像,然后将其附加到div中,然后将其附加到文档中。
http://jsfiddle.net/lucuma/sHGm9/1/
$('.slideshow').each(function(i) {
var $img = $('<img src="..." />').on('load', function(){
alert('loaded');
});
$(this).append( $('<div class="tile" style="" ></div>').append($img) );
// you'd need to just use your div example here
});
原始答案:
我可以想到两件事..在你追加之前添加on / live或者把它改成这样的东西:
var $img = $('<img src="..." />');
$img.on('load', function() {
alert('loaded');
});
$('#slideshow').append($img); // adapted for my example
答案 1 :(得分:2)
我知道这是一个老帖子,但我最近不得不处理这个问题,并找到了一个稍微简单的解决方案:
$(".container").append(yourImageOrImages);
setImages();
function setImages() {
$(".container img").each(function() {
$(this).on('load', function(){
// Your code to run when done loading
});
});
}