div とボタンを含むページがあります。両方に onClick イベントを追加しました。div のボタンをクリックすると、div の onClick も実行されます。これを回避する方法はありますか?
ありがとうございました、
div とボタンを含むページがあります。両方に onClick イベントを追加しました。div のボタンをクリックすると、div の onClick も実行されます。これを回避する方法はありますか?
ありがとうございました、
これを試して、イベントをパラメーターとして onclick イベントに渡し、呼び出します
event.stopPropagation();
event.preventDefault();
onclick イベントの割り当ては次のようになります。
$(button).click(function(event) {
// script here
event.stopPropagation();
event.preventDefault();
});
クリック ハンドラでは、たとえば次のように「stopPropagation」を使用できます。
$("button").click(function(e) {
// handle this event
// ...
// don't pass this event up to parent handlers
e.stopPropagation();
} );
「preventDefault」と呼ばれる関連する関数もあり、これはブラウザーが通常自動的に行うことを行わないように指示します (たとえば、送信ボタンがクリックされたときにページを送信する)。
参照: https://developer.mozilla.org/en/DOM/event.stopPropagation http://api.jquery.com/event.stopPropagation/ クリック イベント リスナーに「return false」を追加すると、どのような影響がありますか? http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/
上記のいずれも機能しない場合は、次を試してください。
$("button").click(function(e) {
e.stopImmediatePropagation();
});
ボタンの onClick イベントが Div にバブリングしないようにする必要があります。したがって、基本的には、ボタンの onClick 関数の最後で、すべてのロジックを実行したら、event.stopPropagation() を呼び出す必要があります。
link 要素のリスナーに を配置e.stopPropagation()
すると、問題が修正されます (イベント バブリングを使用している場合)。
jQuery を使用していない場合は、useCapture
パラメータaddEventListener()
をFalse
info - MDNに設定してください。イベントが DOM を通過する方向を確実に把握したい (イベントをバブリングさせたい)。