2010-08-15 183 views
5

的第一次执行它正确地产生的代码:
负载完整jQuery的.load()回调函数触发多次

但第二时间它产生:
负载完整
负载完整

的3ND时间它产生:
负载完整
负载完整
负载完整

等...所以第20次加载函数完成回调函数被触发20次。

$('#image-tag').load(function() { 
     console.log("load complete"); 
    }); 
}).attr('src', 'image.jpg').appendTo('#main'); 

任何想法是什么导致回调函数重复/增加像这样?

+0

请出示完整的代码 – 2010-08-15 21:53:08

回答

10

这是因为您每次运行该代码时都要添加另一个事件处理程序。

如果您想要将图像标签附加到元素中,则不应使用已存在于页面中的图像。创建一个新的图片广告代码:

$('<img/>').load(function() { 
    console.log("load complete"); 
}).attr('src', 'image.jpg').appendTo('#main'); 
+0

唉唉tottally错过了,谢谢! – Moudy 2010-08-15 22:21:52

+0

非常感谢你。我一直不知道将一些东西绑定到一个循环内的元素上,这对第二次执行造成了麻烦。 '$(#IMG).unbind( '负荷')负载(函数(){...});' – Lg102 2011-12-13 11:26:58

17

它woulds就像你调用这个click处理或其他东西在里面,这种结合每次.load()处理程序。无论是绑定.load()一次,或使用.one(),像这样:

$('#image-tag').one('load', function() { 
    console.log("load complete"); 
});