如果我有一些元素,如:
<div class="one">
<div class="two">
</div>
</div>
我希望在用户点击一个但不是两个时执行某些操作:
$('.one:not(.two)').live('click', function(){
console.log('jazz');
});
但它仍然在控制台日志中...因为该元素是嵌套的!我该如何解决这个问题?
答案 0 :(得分:4)
我更喜欢将单独的点击事件绑定到two
,告诉浏览器停止事件冒泡,imho,它更具可读性:
$('.one').click(function() {
console.log('jazz');
})
.find('.two').click(function(e) {
e.stopPropagation();
});
答案 1 :(得分:2)
您正在寻找
$('.one:not(:has(.two))')
或者,您可以在.one
上处理该事件,然后在.two
处理该事件并致电e.stopPropagation()
,以防止它冒泡到.one
。