2

a-tagで行われる場合を除いて、すべてのクリックイベントをキャッチしたいと思います。

私は自分の問題を示すためにこのフィドルを作成します:http: //jsfiddle.net/vwyFg/7/

なぜこれが機能しないのですか?

$('.three').on('click',':not(a)',function(e){
    $('body').append('<b>i did not click on a a-tag!</b><br>');
    e.preventDefault();
    e.stopPropagation();
});

html:

<div class="wrap three">
    <div class="wrap two">
        <div class="wrap one">
            <a href="javascript:$('body').append('i DID click on a a-tag!!<br>');;return false;">klick me!</a>
        </div>
    </div>
</div>​
4

3 に答える 3

2

クリック イベントが発生した場所を確認する必要があります。

$('div.three').on('click',function(e){    
    if (e.target.tagName.toLowerCase() == 'a') return;
    $('body').append('<b>i did not click on a a-tag!</b><br>');
    e.preventDefault();
    e.stopPropagation();
});​
于 2012-12-05T20:16:16.440 に答える
1

このコードを追加しました:

$(".three a").click(function(e) {
    e.stopPropagation();
});​

ここを参照してください: JSFiddle

于 2012-12-05T20:17:18.967 に答える
1

コードを次のように変更します。:not - の配置に注意してください。

$('.three:not(a)').on('click',function(e){
    $('body').append('<b>i did not click on a a-tag!</b><br>');
    e.preventDefault();
    e.stopPropagation();
});
于 2012-12-05T20:11:33.603 に答える