Jquery .live()不使用HTML5视频事件

时间:2011-06-07 23:42:15

标签: jquery html5 video live

我无法与HTML5视频的结束事件进行交互。问题是标签是使用lightbox-clone插件动态添加到页面的,我不能使用bind来获取结束事件。尝试使用 live(),但这也不起作用。我当然可以使用“click”作为事件,但播放暂停结束都不会起作用。尝试了委托,但这并没有成功。

代码看起来像这样(我使用了Stackoverflow上其他地方发布的解决方案):

$("video").live("play", function() {
    alert("It moves!");
});

使用bind具有所需的效果,但它不会影响弹出容器中的视频标记。 HTML是包含在div中的标准<video>标记,但如果您需要它,我可以包含它。

任何人都可以为此考虑解决方法,或者根本无法做到这一点?我是Jquery的新手,所以我可能会遗漏一些明显的东西。我正在使用旧版本的Jquery(1.3.2),但也在1.6.1上测试过没有结果。

2 个答案:

答案 0 :(得分:5)

我认为live方法依赖于事件冒泡。只有live方法可以捕获气泡的事件。没有标准说video标记事件应该冒泡,所以我认为浏览器以非冒泡的方式实现这些事件。这意味着您必须bind创建每个video元素。

答案 1 :(得分:0)

您可以使用delegate方法吗?我发现它比live更可靠。您甚至可以使用body标签作为参考。

$('body').delegate('video','play',function() {
    alert('it moves!');
});

我在jsfiddle上放了一个非常简单的例子,它似乎有用,虽然它不是一个完整的视频标签......

编辑:经过深思熟虑后,这个例子一点也不好 - 甚至自定义事件被jquery触发时也会被触发。