如何选择一个类而不是它的内部元素?

Posted

技术标签:

【中文标题】如何选择一个类而不是它的内部元素?【英文标题】:How do I select a class but not its inside element? 【发布时间】:2015-05-10 09:56:33 【问题描述】:

说我有

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

我想在 .mydiv 上捕获点击事件,但不在 .myclass 内。

我尝试了.mydiv:not(.myclass),但它似乎不起作用。我认为这是因为我可能正在单击其他类,所以 :not(.myclass) 不起作用。我怎样才能得到我想要得到的区域?谢谢!

【问题讨论】:

#mydiv :not(.myclass) 【参考方案1】:

使#mydiv 可点击,做任何你想做的事,并停止从.myclass 传播事件,这样事件就不会从myclass 冒泡到mydiv

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

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

【讨论】:

cool.. 但我可能仍想在 .myclass 中捕获一些点击事件。会不会有影响?【参考方案2】:

您可以点击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

【讨论】:

【参考方案3】:

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

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

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

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

JS FIDDLE

【讨论】:

以上是关于如何选择一个类而不是它的内部元素?的主要内容,如果未能解决你的问题,请参考以下文章

仅在另一个元素内部时如何选择一个元素?

如何在jQuery中选择最后一个子元素?

如何使用 jQuery 选择关注它的元素

仅当存在集合类而不是其他类时才应用 CSS 规则 [重复]

css中如何获取dom元素

如何在单击或更改时获取 $(this) 选择器的值