选择器:不在jQuery中不起作用

Nir*_*ana 2 html javascript jquery jquery-selectors

我有一个具有ID的主体,body并且在其中具有一个class的div nav-container。我想在用户单击时删除某些类#body,但不要删除.nav-container(这是菜单的覆盖类型)。

尝试以下代码

HTML:

<body id="body">
  <div class="nav-container">
    <a href="#" id="close-btn"> X </a>
    <nav class="display">
      <ul>
        <li><a href="#"> One </a></li>
        <li><a href="#"> Two </a></li>
        <li><a href="#"> Three </a></li>
     </ul>
   </nav>
 </div>
</body>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('#body :not(.nav-container)').click(function() {
    $('.cover').removeClass('active-cover');
    $('.nav-container').removeClass('active');
});
Run Code Online (Sandbox Code Playgroud)

尽管它似乎对我不起作用。

vin*_*akj 5

它不会not排除通过早期css-selector标准的所选元素,因为.nav-container它不是被选择的列表的一部分#body(在这种情况下,不会作为ID的列表),因此您将无法排除该元素。所以基本上你需要的是

$(document).on("click", "div:not('.nav-container')",function() {
    $('.cover').removeClass('active-cover');
    $('.nav-container').removeClass('active');
});
Run Code Online (Sandbox Code Playgroud)