親DOMで "stopPropagation"を使用する方法は?
上記の図では、親domノードのイベントと子ノードもあります。
私は、子でstopPropagationを使用してバブリングを防ぐことができます。
しかし、あまりにも多くの子があると、あまりにも多くのstopPropagationが怒られるべきです。親ノードで使用する関数が子バブルを止めることはできますか?
親DOMで "stopPropagation"を使用する方法は?
上記の図では、親domノードのイベントと子ノードもあります。
私は、子でstopPropagationを使用してバブリングを防ぐことができます。
しかし、あまりにも多くの子があると、あまりにも多くのstopPropagationが怒られるべきです。親ノードで使用する関数が子バブルを止めることはできますか?
イベントが特定の種類の子要素を通過した場合、親のイベントハンドラが行う作業を避けたいように思えます。その場合、親イベントハンドラで、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);
華麗な!!!それは私が必要とするものです。混乱の原因となった私の貧しい英語のために申し訳ありません。 – pingfengafei
あなたのコードを共有することはできますか? – Rayon
はい、私はあなたの質問を理解した場合、もちろん可能です。問題が何であるかはわかりません。 – dfsq