Jquery:选择除具有特定属性的特定子元素之外的所有元素

evi*_*iko 3 jquery jquery-selectors

假设我有这样的事情:

<div class="testdiv">
    <a href="/link1">link 1</a>
</div>
<div class="testdiv">
    <a href="/link2">link 2</a>
</div>
<div class="testdiv">
    <a href="/link3">link 3</a>
</div>
<div class="testdiv">
    <a href="/link4">link 4</a>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我想要选择除了具有属性的子<div>testdiv之外的所有类,如何使用jQuery做到这一点?div<a>href="/link3"

我知道我可以这样做:

$('div.testdiv')
Run Code Online (Sandbox Code Playgroud)

gdo*_*ica 7

使用:not+ :has可以使用一个选择器轻松完成:

$('div.testdiv:not(:has(a[href="/link3"]))')
Run Code Online (Sandbox Code Playgroud)

如果不引用属性中的值("CSS标识符"),则需要/使用两个反斜杠(\\)转义斜杠():

$('div.testdiv:not(:has(a[href=\\/link3]))')
Run Code Online (Sandbox Code Playgroud)

现场演示

如果div中只能有一个锚点,您可以使用:

$('div.testdiv:has(a[href!="\\/link3")')
Run Code Online (Sandbox Code Playgroud)

  • [CSS规范](http://www.w3.org/TR/selectors/#attribute-selectors)提到字符串(引用)和标识符(未引用)之间的区别.由于允许不带引号的属性选择器,jQuery似乎遵循相同的规则集. (2认同)