我必须在jQuery中编写一个特定的选择器,它必须选择数字列表中的所有元素(具有给定的类“ a”),该列表具有类“ b”且内部没有链接。他们给他们一定的阶级(这给他们一定的格式)。
例如,此类列表的示例:
<ol class="a">
<li><a href="https://stackoverflow.com/">List element</a></li>
<li class="b"><a href="https://stackoverflow.com/">List element</a></div></li>
<li class="b">List element</a></li>
</ol>
仅最后一个元素应获得该类。
尽管我尝试这样做:
$('ol.a li.b:not(a)').addClass('someclass');
然后第二个元素也获得该类。
我也试图用“:not(a)”之前的空格来做到这一点,但是这样一来,没有东西可以得到那个类。
这是您要找的吗?我想我明白您的要求。如果不是,请告诉我,以便我修改答案。 :)
本质上是'ol.a li.b:not(:has(a))'
表示要搜索类别为a
的有序列表,而任何后代li
项是类别为b
的项,其中[[没有具有any个子代是锚点a
。
const nonLinks = $('ol.a li.b:not(:has(a))');
nonLinks.addClass("red");
.red {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ol class="a">
<li><a href="https://stackoverflow.com/">First</a></li>
<li class="b"><a href="https://stackoverflow.com/">Second Element</a></li>
<li class="b">Shouldn't Be Included</li>
</ol>