jQuery:not selector not working on click

sycxhyv7  于 2023-06-22  发布在  jQuery
关注(0)|答案(3)|浏览(144)

下面的代码用于在单击除#target之外的任何元素时从具有类“left”和“searchbar”的li元素中删除类“on”,但它没有任何效果:

$(':not(#target)').click(function() {
  $('li.searchbar.left').removeClass("on");
});

这里是HTML,基本上如果用户点击任何地方,但#target,它将删除类从li。

<body>
  <header></header>
  <div class="one"></div>
  <div class="two"><a id="target"></a></div>
  <ul>
    <li class="searchbar left on"></li>
  </ul>
  <footer></footer>
</body>
zsbz8rwp

zsbz8rwp1#

// if click anywhere on <body> remove class on from given li
$(document).on("click", function() {
    $('li.searchbar.left').removeClass("on");
});

// if click happens on #target do nothing
$('#target').on('click', function(e) {
    e.stopPropagation();
});
body {
  background-color: green;
}

#target {
background-color: powderblue;
width: 100px; height: 100px;
}

li.searchbar.left.on {
  color: orange;
}

li.searchbar.left {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<ul>
<li class="searchbar left on">hello</li>
</ul>

<div id="target">#target</div>
vyswwuz2

vyswwuz22#

对于not选择器,您将其应用于类似的元素组。
例如,从具有类“selected”的li的列表中,但是点击没有“selected”类的li:

$('.left:not(#target)').click(function() {
console.log("clicked");
});
35g0bw71

35g0bw713#

$("body").click(function(ev) {
if(ev.target.id == "target") {
return false;
} else {
// your code
}
})

相关问题