如何使用jquery和css:not()选择器来定位所有标记除外

时间:2012-12-05 20:08:03

标签: jquery jquery-selectors

我希望捕获所有点击事件,除非它们是在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>​

3 个答案:

答案 0 :(得分: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();
});​

答案 1 :(得分:1)

将您的代码更改为此,请注意:不是 -

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

答案 2 :(得分:1)

我添加了这段代码:

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

见这里:JSFiddle