我花了四个小时试图弄明白为什么我的jQuery事件会因为一些只能发生一次的事情而被多次触发。基本上,我有一个广告横幅,它将使用jQuery旋转图像。我正在等待页面加载,以加载除了默认显示的图像之外的所有图像:
$("#mainadslot").prepend('<img>')
.find(":first-child")
.attr("src", src)
.load(function(event) {
// Global javascript variable itterates here
// to count how many images have loaded.
// If they're all done, we can start rotating
});
我甚至还没有看到效果,因为出于某种奇怪的原因,onLoad
在每个图像上启动了 * 三 * 次。我的第一个猜测是冒泡,所以我做了一些探索,并尝试了.stopPropagation()
jQuery函数。不幸的是,这对我没有任何帮助。
如果有人能向我解释为什么会发生这种情况,我将不胜感激。
2条答案
按热度按时间kgqe7b3p1#
mainadslot下面是否有多个元素可被视为第一个子元素?
find()表达式将获取#mainadslot的所有第一个子代,因此,如果标记如下所示(这只是一个疯狂的例子):
你会有3个第一个孩子:div、span和img。
elcex8rz2#
是否尝试过在"src"属性之前设置load()事件处理程序?
根据文档:只有在元素完全加载之前设置了load,它才会起作用。
也许这不会解决你的问题,但无论如何你都应该改变它。