如何为没有 link 的数字列表元素编写 jQuery 选择器

How write jQuery selector for numeric list elements without link

我必须在 jQuery 中编写一个特定的选择器,它必须选择数字列表中的所有元素(给定 class "a")具有 class "b" 里面没有链接。他们给了他们一定的class(给了他们一定的格式)。

例如,对于这样的列表:

<ol class="a">
    <li><a href="https://whosebug.com/">List element</a></li>
    <li class="b"><a href="https://whosebug.com/">List element</a></div></li>
    <li class="b">List element</a></li>
</ol>

只有最后一个元素应该得到 class。

尽管当我尝试这样做时:

$('ol.a li.b:not(a)').addClass('someclass');

然后第二个元素也得到 class。

我也尝试在“:not(a)”之前用 space 来做到这一点,但是这样一来什么也得不到 class。

这是您要找的吗?我想我明白你在问什么。如果不是,请告诉我,以便我修改我的答案。 :)

本质上 'ol.a li.b:not(:has(a))' 意味着搜索 class 为 a 的有序列表,以及 class 为 [ 的任何后代 li 项目=16=] 没有 任何 children 是锚 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://whosebug.com/">First</a></li>
        <li class="b"><a href="https://whosebug.com/">Second Element</a></li>
        <li class="b">Shouldn't Be Included</li>
</ol>