我只是希望得到一个共识,即JS在冒泡和捕获之间更好的事件委派模式.
现在我明白,根据特定的用例,人们可能希望使用捕获阶段而不是冒泡,反之亦然,但我想了解哪种委派模式适用于大多数一般情况以及为什么(对我而言似乎冒泡模式).
换句话说,W3C addEventListener实现背后的原因是支持冒泡模式.[仅当您指定第3个参数及其true时才会启动捕获.但是,你可以忘记第三个参数和冒泡模式被踢了]
我抬头看了看JQuery的绑定功能得到一个回答我的问题,似乎它甚至不支持捕获阶段事件(在我看来,因为IE不支持拍摄模式).
所以看起来冒泡模式是默认选择,但为什么呢?
鉴于代码:
var event = new Event('build');
// Listen for the event.
elem.children[0].addEventListener('build', function (e) { ... }, false);
// Dispatch the event.
elem.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
不调用子元素的处理程序。见https://jsfiddle.net/mvjh7700/
有没有办法调用处理程序而不直接在孩子(或其后代)上分派事件?在我的实际用例中,各种元素(即后代元素,而不是直接子元素)都会监听build
事件,我不知道具体是哪个元素(并且不想用类标记它们)。
或者,对于我的用例,如果我可以找到所有在“build”上有处理程序的元素,然后我可以在每个元素上调用事件,那就可以了。但是,我仍然想知道原始问题的答案