我的问题与此类似:Jquery hide() all elements with certain class except one。但是就我而言,我有一个特定的父母。
我尝试过:
$('.slideNum').hide();
$('#marginRight ul li.selBar.slideNum').show();
以slideNum
作为父项的selBar
不应被隐藏,但它会隐藏!
与流行的答案不同,我没有使用“ not”,因为条件是针对父级而不是元素本身。
答案 0 :(得分:1)
您可以在not过滤器(https://api.jquery.com/not/)中使用函数 像这样:
$('.slideNum').not(function () {
return $(this).parent(".selBar").length !== 0;
}).hide();
答案 1 :(得分:1)
您可以通过将父项用作选择器的一部分来使用not()
进行过滤
$('.slideNum').not('.selBar *').hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="slideNum">Should be hidden</div>
<div class="selBar">
<div class="slideNum">Should be visible</div>
</div>