选择器:不在 jQuery 中不工作
Selector :not in jQuery not working
我有一个 body,ID 为 body
,里面有一个 div,ID 为 class nav-container
。我想在用户单击 #body
时删除某些 classes,但不删除 .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');
});
虽然它似乎对我不起作用。
第一个元素不应该是父元素,如#body,而是元素。例如 div:not('example')
适用于每个 div 除了示例。
$("div:not(.nav-container)").click(function() {
alert("nav-container was not clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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>
<br />
<div>click here </div>
</body>
它不会工作,因为 not
排除了通过早期 css 选择器标准的选定元素,因为 .nav-container
不是 #body
选择的列表的一部分(在这种情况下不会作为其 ID 列出),因此您将无法排除它。
所以基本上你需要的是
$(document).on("click", "div:not('.nav-container')",function() {
$('.cover').removeClass('active-cover');
$('.nav-container').removeClass('active');
});
我有一个 body,ID 为 body
,里面有一个 div,ID 为 class nav-container
。我想在用户单击 #body
时删除某些 classes,但不删除 .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');
});
虽然它似乎对我不起作用。
第一个元素不应该是父元素,如#body,而是元素。例如 div:not('example')
适用于每个 div 除了示例。
$("div:not(.nav-container)").click(function() {
alert("nav-container was not clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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>
<br />
<div>click here </div>
</body>
它不会工作,因为 not
排除了通过早期 css 选择器标准的选定元素,因为 .nav-container
不是 #body
选择的列表的一部分(在这种情况下不会作为其 ID 列出),因此您将无法排除它。
所以基本上你需要的是
$(document).on("click", "div:not('.nav-container')",function() {
$('.cover').removeClass('active-cover');
$('.nav-container').removeClass('active');
});