防止儿童div开火事件

时间:2012-11-27 00:28:59

标签: jquery

我正在尝试阻止在用户单击子项或div时触发click事件。

我有

<div class='test'>
   <div class='click1'>
     test 1

    </div>
   <div class='click1'>
     test 2

    </div>

   <div class='click1'>
     test 3

    </div>

</div>

我的jquery

  $('.test').click(function(e){

      e.stopPropagation(); //doesn't work
     alert('click!')

  })

我需要将点击事件注册到.test div,并且我不希望在用户点击子div时弹出警告。

反正有没有这样做?非常感谢!

3 个答案:

答案 0 :(得分:2)

$('.test').on('click', '*', function(e){
  e.stopPropagation();
});

DEMO:http://jsfiddle.net/rD2ua/

修改

$('.test').children().bind('click', function(e){
  e.stopPropagation();
});

您可以直接绑定到子元素

DEMO:http://jsfiddle.net/rD2ua/1/

答案 1 :(得分:2)

更新:

$('.test').click(function(e){
     if (e.target.className == 'click1') {
         return false;
     }
})

工作演示:http://jsfiddle.net/drDMK/

甚至这个:

$('.test').click(function(e){
     if (e.target.className != 'test') {
         return false;
     }
})

工作演示:http://jsfiddle.net/drDMK/1/

答案 2 :(得分:1)

您应该在子级别(即“click1”)捕获click事件并停止传播。它将UP传播到其父级('test')。