0

親バインドが呼び出されるのを停止するにはどうすればよいですか?

例:

<div id="test">
    <a href="#" id="link" onclick="alert('testing')">TEST</a>
</div>
$('#test').on('click',function(){
   alert('I dont want it to fire it up!');        
})

#linkをクリックした場合、#testのイベントではなく、#linkのonclickを起動したいだけです。

ご回答ありがとうございます

4

4 に答える 4

2

stopPropagationを使用する

 event.stopPropagation();
于 2012-05-09T12:25:16.200 に答える
1

イベントハンドラーreturn falseでを実行すると、伝播が防止されます。残念ながら、リンクのデフォルトの動作も妨げられます。例:あなたの場合の読み込み<page url here>#

<a href="#" id="link" onclick="alert('testing'); return false;">TEST</a>

編集

jQuery.eventオブジェクトには、バブルtargetイベントの場合に、実際のクリックを受け取った要素を含むという興味深いプロパティが含まれています。意味がある場合は、次のように使用できます。

$('#test').on('click', function(e) {
    if ($(e.target).is("#link")) {
        alert('#link was clicked; comment out this alert to ignore it');
    }
    else {
        alert('you clicked me but you did not click #link');
    }
});

フィドル

ちなみに、インラインと邪魔にならないイベントハンドラーを混在させる理由があるのだろうか?

于 2012-05-09T12:27:40.723 に答える
0

stopPropagation()イベントの伝播を防ぎます。ただし、これを行うには、イベントをイベントハンドラーに渡す必要があります。

$('#test').on('click',function(e){
    e.stopPropagation();
})
于 2012-05-09T12:25:06.200 に答える
0

stopPropagation()は、jQueryの内外で有効なjavascript関数です。jQueryはIEのサポートに役立ちますが、cancelBubbleを使用してIEをサポートすることもできます。

document.getElementById('link').onclick = function(e) {
  if (e && e.stopPropagation) e.stopPropagation(); else window.event.cancelBubble = true;
}
于 2012-05-09T12:34:05.550 に答える