2012-04-26 110 views
1

选择器如果我有这样一些元素:jQuery的不嵌套元素

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

,我想要做的事,当用户点击一个,但不是两个:

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

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

回答

4

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

$('.one').click(function() { 
    console.log('jazz'); 
}) 
.find('.two').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

是啊,这似乎更整洁:)干杯 – Cameron 2012-04-26 14:50:02

2

您正在寻找

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

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