1

如果我有一些元素,例如:

<div class="one">
    <div class="two">
    </div>
</div>

当用户单击一个但不是两个时,我想做一些事情:

$('.one:not(.two)').live('click', function(){
            console.log('jazz');     
        });

但它仍然会记录控制台日志......因为元素是嵌套的!我该如何解决?

4

2 回答 2

4

我更愿意将一个单独的点击事件绑定到two,告诉浏览器停止事件冒泡,恕我直言,这样更具可读性:

$('.one').click(function() {
   console.log('jazz');
})
.find('.two').click(function(e) {
   e.stopPropagation();
});
于 2012-04-26T14:47:20.480 回答
2

您正在寻找

$('.one:not(:has(.two))')

或者,您可以处理事件 on .one,然后处理它.two并调用e.stopPropagation()以防止它冒泡到.one.

于 2012-04-26T14:45:30.497 回答