我能否将事件分配给 div,以便在包含的 div 的所有元素都已完全加载时触发?例如。如果 div 包含图像,则在图像完全加载后在 div 上触发事件。我正在使用 jquery。
最佳答案
不确定您是如何动态添加内容的,但这个示例应该可以说明它是如何工作的。
它使用 .append()
来模拟您动态加载的内容。然后在附加之后,它使用 .find()
查找图像,并使用 .load()
将加载处理程序附加到它们。
最后,它返回图像的 length
属性。然后在加载处理程序中,当图像完成加载时,长度会减少。一旦它到达 0
,所有图像都被加载,并且 if()
中的代码运行。
示例: http://jsfiddle.net/ehwyF/
var len = $('#mydiv').append('<img src = "http://dummyimage.com/150x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/160x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/170x90/f00/fff.png&text=my+image" /><img src = "http://dummyimage.com/180x90/f00/fff.png&text=my+image" />')
.find('img')
.load(function() {
if( --len === 0) {
alert('all are loaded');
}
}).length;
这样,代码仅基于 #mydiv
中的图像运行。
如果那里有任何图像不是动态的,因此不应该得到 .load()
事件,你应该能够添加一个 .not()
过滤器以排除 complete
属性为 true
的内容。
将其放在 .find()
之后和 .load()
之前。
.not(function(){return this.complete})
关于javascript - 完全加载后将事件分配给 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4160614/