2015-01-31 74 views
2

我经常使用jQuery的on函数来处理将来的事件。例如:针对未来媒体元素的jQuery功能

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

但是,我不能得到这个与playplaying事件对我video标签工作:

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

下工作得很好,但不结合未来的元素:

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

请问jQuery的未来结合的on函数的语法只能使用特定事件的工作,或做我缺乏HTMLMediaElement对象事件的支持?我正在使用jQuery 1.11.2。

回答

3

它缺乏对不会冒泡的事件的支持,并且媒体事件不会冒泡,因为它们对除媒体元素以外的任何其他元素没有意义,并且媒体元素(如<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); 
+0

有道理。谢谢! – 2015-01-31 19:53:34