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