如果您无法访问父元素的代码,如何停止事件传播?

问题描述

如果我将子元素附加到父元素,如果我无权访问父元素的事件侦听器代码,是否可以停止将父事件传播到附加子?如果可能的话,怎么办?

在子事件侦听器中是否可以执行此操作?是否有类似e.target.parentElement.stopPropagation()的东西?

解决方法

如果事件通过您添加的子代,则可以通过在其上调用stopPropagation来停止该事件。它与元素的处理程序无关。重要的是,其中一个在事件上调用了该方法。因此只需e.stopPropagation()

如果事件通过子对象(它直接针对父对象,或通过其他子对象传递给父对象),则除非停止,否则无法停止传播在附加另一个处理程序之前,将您的处理程序附加到父元素。但是从您的描述来看,这听起来并不可行。