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

时间:2015-06-23 19:46:41

标签: javascript jquery html jquery-selectors

我有一个标识为body的正文,其中有一个类nav-container的div。我希望在用户点击#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>

的jQuery

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

但它似乎对我不起作用。

2 个答案:

答案 0 :(得分:3)

它不起作用not排除传递早期css选择器条件的选定元素,因为.nav-container不是#body选择的列表的一部分(不会列在此列表中)案例作为其ID),所以你不能排除它。 所以基本上你需要的是

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

答案 1 :(得分:0)

第一个元素不应该是父元素,比如#body,而不是元素。例如\适用于除示例之外的每个div。

&#13;
&#13;
div:not('example')
&#13;
$("div:not(.nav-container)").click(function() {
alert("nav-container was not clicked");
});
&#13;
&#13;
&#13;