如何在 parent dom 上使用 "stopPropagation"?
how to using "stopPropagation" on parent dom?
上图中,parent dom个节点有事件,child个节点也有。
我可以在 Child 中使用 stopPropagation 来防止冒泡。
但在那种情况下,如果 children 太多,应该写太多的 stopPropagation。在 parent 节点上使用函数是否可以停止 child 气泡?
听起来您想避免执行父事件处理程序在事件通过特定类型的子元素时执行的工作。在这种情况下,在您的父事件处理程序中,您可以使用 event.target
来确定事件是否通过了匹配的子事件。
在半伪代码中:
theParentElement.addEventListener("the-event", function(e) {
for (var node = e.target; node && node != this; node = node.parentNode) {
if (isChildWeWantToFilterOut(node)) {
return;
}
}
// parent handler logic that you only want to run when the
// event didn't pass through a relevant child
}, false);
上图中,parent dom个节点有事件,child个节点也有。
我可以在 Child 中使用 stopPropagation 来防止冒泡。
但在那种情况下,如果 children 太多,应该写太多的 stopPropagation。在 parent 节点上使用函数是否可以停止 child 气泡?
听起来您想避免执行父事件处理程序在事件通过特定类型的子元素时执行的工作。在这种情况下,在您的父事件处理程序中,您可以使用 event.target
来确定事件是否通过了匹配的子事件。
在半伪代码中:
theParentElement.addEventListener("the-event", function(e) {
for (var node = e.target; node && node != this; node = node.parentNode) {
if (isChildWeWantToFilterOut(node)) {
return;
}
}
// parent handler logic that you only want to run when the
// event didn't pass through a relevant child
}, false);