我试图选择不在以下 div 内的所有元素 <div class="manager"></div>
或<div class="release"></div>
.
因此,我在下面创建了选择器,但是在上面的 div 中选择元素不正确。你知道我如何更新我的选择器以忽略 <div class="manager"></div>
中的所有元素吗?和<div class="release"></div>
?
$('*:not(.release, .manager) *').filter(function () {
return $(this).css('position') == 'fixed';
}).addClass('reset-pos');
这是我的 html 的组织方式:
<body>
<div>
...
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="manager">
...
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="release">
...
</div>
</body>
最佳答案
而不是像这样进行递归遍历:
$('*:not(.release, .manager) *')
您可以简单地执行以下操作:
$('*:not(.release, .manager, .release *, .manager *)')
工作演示:
(注意:我在此演示中使用父类,以排除 head 和其他标记,因为使用 *
包含所有内容)
$('.parent *:not(.release, .manager, .release *, .manager *)')
.addClass('reset-pos');
.reset-pos { border: 1px solid orange; padding: 5px; margin: 5px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
<div>
<p>Ouside manager & release</p>
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="manager">
<p>Inside manager</p>
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="release">
<p>Inside release</p>
</div>
</div>
非工作演示:
(此演示显示了选择器的问题,没有任何父类)
$('*:not(.release, .manager) *').addClass('reset-pos');
.reset-pos { border: 1px solid orange; padding: 3px 8px; margin: 4px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<p>Ouside manager & release</p>
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="manager">
<p>Inside manager</p>
</div>
<!-- This element and all below should be ignored/not selected -->
<div class="release">
<p>Inside release</p>
</div>
关于javascript - 选择器忽略给定类中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62208791/