我可以在同一个元素上附加捕获和泡泡阶段事件处理程序(可能是不同的或相同的函数)吗?
我尝试了它并且工作正常。
是否允许按照W3C? 我没有看到DOM3事件规范中提到的任何限制或限制。
有人可以澄清一下吗?
var divList = document.getElementsByTagName('div');
var eventHandler = function(event){
console.log(event.currentTarget);
}
for(var index=0; index < divList.length; index++){
divList[index].addEventListener('click',eventHandler,true);
divList[index].addEventListener('click',eventHandler,false);
}
答案 0 :(得分:1)
是的,将事件绑定到两个阶段都是allowed。以下是一些非常有用的实例:
某些事件,例如焦点,不会冒泡,但可以捕获。 目标元素上的内联处理程序在目标元素的捕获处理程序之前触发。
Web平台中的许多新指定的事件(例如媒体事件)都没有冒泡,这对依赖于事件委派的Ember这样的框架来说是一个问题。但是,在IE9中添加的捕获API可以针对所有事件正确调用,并且不需要规范化层。支持捕获API不仅允许我们删除jQuery依赖项,而且它将允许我们正确处理这些非冒泡事件。这将允许您使用诸如在组件中播放之类的事件,而无需手动设置事件侦听器。
<强>参考强>
答案 1 :(得分:0)
是的但是应该不鼓励,你应该处理触发回调中其他事件/调用函数的逻辑。
很少有一个用例,其中一个元素需要多个相同的事件类型。