jQuery 关于未来媒体元素的功能

jQuery on function for future media elements

我经常使用 jQuery 的 on 功能来处理未来的事件。例如:

$(document).on('click', '.my-div', myHandler);

但是,我无法让它与我的 video 标签上的 playplaying 事件一起使用:

$(document).on('playing', 'video', function() {
  console.log('video playing');
});

以下工作正常,但不绑定到未来的元素:

$('video').on('playing', function() {
  console.log('video playing');
});

jQuery 的 on 函数的未来绑定语法是否仅适用于某些事件,或者它是否缺乏对 HTMLMediaElement 对象事件的支持?我正在使用 jQuery 1.11.2.

它不支持不冒泡的事件,媒体事件不冒泡,因为它们对除媒体元素之外的任何其他元素都没有意义,媒体元素,如 <audio><video> 不能嵌套,所以没必要让事件向上冒泡。

它的工作方式是事件冒泡,在单击事件上它从您单击的元素开始,即 event.target 并一直持续到文档级别。

例如,单击锚点内的图像也会触发锚点。

事件委托的工作方式是将事件处理程序附加到事件链上层的元素,然后检查 event.target

快速 jQuery 示例

$('#parent').on('click', function(e) {
    if ( $(e.target).hasClass('child') ) func();
});

// is (somewhat) the same as

$('#parent').on('click', '.child', func);