【发布时间】:2015-04-19 09:58:26
【问题描述】:
我见过类似的问题 - 但不能解决我的问题!
我的页面上有音频,当一个结束时,我希望下一个开始,但我什至无法触发结束...
我将代码缩减为:
function DaisyChainAudio() {
$().on('ended', 'audio','' ,function () {
alert('done');
});
}
这是从我的页面/代码中调用的(并被执行,设置断点显示)。
据我所知,这应该在文档级别设置处理程序,因此任何“音频”标签(即使是动态添加)的任何“结束”事件都应该被捕获并向我显示警报...
但它永远不会触发。
编辑
到目前为止,从 Çağatay Gürtürk 的建议中借鉴了一些...
function DaisyChainAudio() {
$(function () {
$('audio').on('ended', function (e) {
$(e.target).load();
var next = $(e.target).nextAll('audio');
if (!next.length) next = $(e.target).parent().nextAll().find('audio');
if (!next.length) next = $(e.target).parent().parent().nextAll().find('audio');
if (next.length) $(next[0]).trigger('play');
});
});
}
我仍然想在文档级别设置它,这样我就不用担心在添加动态元素时添加它...
【问题讨论】:
-
当您致电
.on()时,音频标签是否已经可用? jquery.com 说:“事件处理程序仅绑定到当前选定的元素;它们必须在您的代码调用 .on() 时存在。” -
碰巧他们就是这样。但据我了解 $().on 会将事件附加到文档根目录 - 所以任何结束(即使是动态添加的标签)都会冒泡并被捕获。
标签: javascript jquery audio html5-audio