如何选择一个类但不选择其内部元素?

时间:2015-03-09 09:31:46

标签: javascript jquery jquery-selectors selector

说我有

<div id="mydiv">
  <div class="myclass">
       <span class="otherclass"></span>
       and many other classes...
  </div>
</div>

我想捕获.mydiv上的click事件,但不是.myclass。

我试过了.mydiv:not(.myclass),但似乎没有用。我想是因为我可能点击了其他类,所以:not(.myclass)无效。我怎样才能得到我想要的区域?谢谢!

3 个答案:

答案 0 :(得分:3)

使#mydiv可点击,执行任何操作,并停止.myclass的事件传播,因此事件不会从myclass冒泡到mydiv

     $('#mydiv').click(function(){
        // do anything
     })

    // stop event propagation
     $('.myclass').click(function(e){
        e.stopPropagation();
        })

答案 1 :(得分:0)

您可以点击mydiv ID并在该功能中编写代码,然后在.myclass点击事件中编写return false以停止进一步执行功能。

$('#mydiv').click(function(){
    // stuff your code here
});

//Use `return false` instead of `e.stopPropagation();`
$('.myclass').click(function(e){
  return false;
})
  

e.stopPropagation()很危险,请阅读 Documentation

答案 2 :(得分:0)

调用 .off() 会删除事件处理程序

    $("#mydiv").on('click', function () {
        alert("You clicked mydiv");
    });

    $(".myclass").off('click', function () {
    });
           or like this

   $(".myclass").off();

<强> JS FIDDLE