javascript - 完全加载后将事件分配给 div

标签 javascript jquery

我能否将事件分配给 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/

相关文章:

javascript - YouTube iFrame 由于边距无法点击(Bootstrap)

javascript - 单击链接时如何替换文本区域中的某些文本

javascript - 仅当之前未使用 jQuery 添加过的元素时,才在一组元素之后添加元素

javascript - 如何获取href属性的值

javascript - 带有 Angular 2、D3 和 Vizuly 的第三方库

javascript - Fabric.js Canvas 上的动画 GIF

javascript - 如何创建返回页面顶部的按钮?

javascript - 如何在 Bootstrap 中为 Accordion 添加加号或减号? Accordion 关闭时显示加号, Accordion 打开时显示减号

javascript - 来自 Mysql 的简单 Jquery Ajax 建议

javascript - 从 Firefox 扩展获取浏览器版本