如果我有一些元素,例如:
<div class="one">
<div class="two">
</div>
</div>
当用户单击一个但不是两个时,我想做一些事情:
$('.one:not(.two)').live('click', function(){
console.log('jazz');
});
但它仍然会记录控制台日志......因为元素是嵌套的!我该如何解决?
如果我有一些元素,例如:
<div class="one">
<div class="two">
</div>
</div>
当用户单击一个但不是两个时,我想做一些事情:
$('.one:not(.two)').live('click', function(){
console.log('jazz');
});
但它仍然会记录控制台日志......因为元素是嵌套的!我该如何解决?
我更愿意将一个单独的点击事件绑定到two
,告诉浏览器停止事件冒泡,恕我直言,这样更具可读性:
$('.one').click(function() {
console.log('jazz');
})
.find('.two').click(function(e) {
e.stopPropagation();
});
您正在寻找
$('.one:not(:has(.two))')
或者,您可以处理事件 on .one
,然后处理它.two
并调用e.stopPropagation()
以防止它冒泡到.one
.