jQuery:等待加载元素(视频标记 - 动态生成)

Rou*_*oon 3 jquery load onload dynamically-generated html5-video

在不使用超时的情况下,我想使用jQuery来检查即将生成的视频标签.当我们正在寻找视频标签时,它还不存在.

我可以使用window.load等待整个窗口加载,然后调用回调函数:

window.load = function () {player = jQuery("#videoid"; }
Run Code Online (Sandbox Code Playgroud)

但无论如何要"等待",直到特定的视频标签插入/加载到正文然后执行回调函数?就像是:

jQuery("#videoid").bind('load', function() { player = jQuery("#videoid"); })
Run Code Online (Sandbox Code Playgroud)

提前致谢

Jas*_*per 9

您可以将绑定委托给DOMNodeInserted元素的事件,以便在插入时将运行事件处理程序.这在IE8及更早版本中不起作用,但<video>标签也不起作用:

jQuery(document).delegate('video', 'DOMNodeInserted', function () {
    alert('Wana watch a video?');
});
Run Code Online (Sandbox Code Playgroud)

注意与之$(<root element>).on(<event>, <selector>, <event handler>)相同$(<root element>).delegate(<selector>, <event>, <event handler>).

这是一个演示:http://jsfiddle.net/vW4Pg/

UPDATE

如果您对实现此想法感兴趣,请务必查看以下内容:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events

感谢@JFK的评论.

  • 如果有人遇到这个(旧的)答案,请记住这一点https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events (2认同)