jquery不是带有嵌套元素的选择器

时间:2012-04-26 14:44:14

标签: jquery

如果我有一些元素,如:

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

我希望在用户点击一个但不是两个时执行某些操作:

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

但它仍然在控制台日志中...因为该元素是嵌套的!我该如何解决这个问题?

2 个答案:

答案 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