私は、別の要素にネストされた要素を持っています。私は、外部要素に登録されたmouseoverイベントを持っています。私のマウスが外側の要素に入ったときと内側の要素に入ったときの両方で起動します。内側の要素でイベントの発生をオフにするにはどうすればよいですか?イベント伝播の混乱
0
A
答えて
1
イベントはオブジェクトに発生し、DOMツリーをバブルアップします。しかし、あなたはevent.stopPropagation()
でバブリングを止めることができます。これは、標準に準拠したブラウザでのみ機能します(IEの最新バージョンを除くすべてのブラウザで動作するわけではありません)。
innerElement.addEventListener('mouseover', function (event) {
event.stopPropagation();
}, false);
IEのバージョンは次のようになります。だから、全く
innerElement.attachEvent('onmouseover', function() {
window.event.cancelBubble = true;
});
:あなたはjQueryのを(使用している場合、それは提供しています)
el.onmouseover = function(e) {
//normalize event object to avoid cross browser inconsistencies
e = e || window.event;
//grab target element from which event is originated
var target = e.target || e.srcElement;
if (target === el) {
//do something here
}
};
:ここ
function listener(event) {
event = event || window.event;
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
if (innerElement.addEventListener) {
innerElement.addEventListener('mouseover', listener, false);
} else {
innerElement.attachEvent('onmouseover', listener);
}
0
オフにすることはできませんが、ハンドラーは常にevent.target
(またはIEのevent.srcElement
)をチェックして正しいハンドラーに関係していることを確認できます。
また、内部要素にハンドラを追加し、イベントオブジェクトに対して "stopPropagation()"を呼び出させることもできます。
1
は可能な解決策でありますそのような問題を処理する素晴らしい.hover()イベントあなたのための手綱。
関連する問題
- 1. イベント伝播はAngular2
- 2. Flash AS3イベント伝播
- 3. setTimeoutとイベントの伝播
- 4. 角度の再開イベントの伝播
- 5. JQuery.Deferredオブジェクト間のイベントの伝播
- 6. jqueryのセレクタとイベントの伝播
- 7. 子イベントのイベントストップ伝播問題
- 8. Jqueryイベントのタッチ伝播親子(リンク)
- 9. ノードj内のマザークラスにイベントを伝播
- 10. イベントの伝播を停止する - salesforce1
- 11. javascriptイベントの伝播を停止
- 12. GTKウィンドウのイベントが伝播しない
- 13. 角度停止イベントの伝播
- 14. jQueryの伝播
- 15. タッチイベントの伝播
- 16. オブジェクトの伝播
- 17. ストップ伝播jquery
- 18. 停止伝播
- 19. jeditable伝播
- 20. BizTalk Ack伝播
- 21. (伝播= Propagation.REQUIRES_NEW)
- 22. コントロールイベント伝播フレックス
- 23. ロック伝播
- 24. VB6エラーの伝播
- 25. 要素の伝播
- 26. スワイプイベントの伝播が
- 27. Yoctoカーネルコンフィグレーションの伝播
- 28. ヌル・伝播交換
- 29. 停止SMS伝播
- 30. は、ロック伝播に