【发布时间】:2016-03-21 00:02:11
【问题描述】:
我在父级中有一组按钮。每个都包含一个以编程方式添加的 SVG 图标。我正在尝试监听父元素,然后使用事件委托来触发特定按钮的不同功能,但最终发生的是我得到了包含的 svg 或路径的事件目标,而不是按钮本身。有没有办法利用事件冒泡,或者改变我这样做的方式仍然避免添加大量事件处理程序并触发我需要的事件?下面是一些简化的代码:
<div class="parent">
// I have a whole lot of these added to the page programmatically
<button class="some-unique-class">
<svg> //... </svg>
</button>
</div>
然后在我的 JavaScript 中:
document.querySelector('.parent').addEventListener('click', function(event) {
//.. I always want to trigger events on the buttons, not
// on the svg's and their paths.
});
使用 JQuery,我可以通过侦听父元素然后指定元素来轻松地做到这一点,但我想在 vanilla JS 中做到这一点。
任何帮助将不胜感激。
【问题讨论】:
-
在使用事件委托时,基本上总是要检查目标是否是按钮的子节点。
-
我也这么认为。
标签: javascript dom-events