我已经写了这段代码。它不起作用,但有了这个你应该知道我想要实现的目标
$('.jfmfs-alpha-separator').filter(function() {
return ($(this).next().not(".hide-filtered").hasClass("jfmfs-alpha-separator"));
}).addClass('hide-filtered');
我有相同级别的 div 数量。在具有 jfmfs-alpha-separator 类的 div 下面我有 div 的数量,然后是 div jfmfs-alpha-separator 和 div 的数量(注意下面我的意思是在同一级别而不是子级)。现在,当 jfmfs-alpha-separator 之后的所有 div 都获得类 .hide-filtered 时,我也想隐藏那个 jfmfs-alpha-separator div。
在我的代码中,我试图在具有 jfmfs-alpha-separator 类的 div 之后找到下一个 div,该类没有“隐藏过滤”类并且具有 jfmfs-alpha-separator 类。如果此检查返回 true,我将隐藏该 div。
例子:
<div class ="jfmfs-alpha-separator">Letter A</div>
<div class ="friend hide-filtered">Aaron</div>
<div class ="friend hide-filtered">Aaron</div>
<div class ="friend hide-filtered">Ashutosh</div>
<div class ="jfmfs-alpha-separator">Letter B</div>
<div class ="friend hide-filtered">Bob</div>
<div class ="friend">Baron</div>
<div class ="friend hide-filtered">Batista</div>
<div class ="jfmfs-alpha-separator">Letter C</div>
<div class ="friend hide-filtered">Carl</div>
<div class ="friend hide-filtered">Chris</div>
<div class ="friend hide-filtered">Charlie</div>
<div class ="jfmfs-alpha-separator">Letter D</div>
...
在上面的示例中,字母 A 和 C 应该被隐藏,因为它下面的所有名称都有隐藏过滤类,字母 B 应该保持原样。
我如何实现这一目标?
最终解决方案使用 Salmans 答案:
$(".jfmfs-alpha-separator").each(function () {
if ($(this).nextUntil(".jfmfs-alpha-separator").not('.hide-filtered').length == 0) {
$(this).addClass('hide-filtered');
}else{
$(this).removeClass('hide-filtered');
}
});