jQuery的:选择除一个所有元素与特定属性的特定子(Jquery: select all elem

2019-09-17 08:40发布

假设我有这样的事情:

<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>

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

我知道我能做到这一点:

$('div.testdiv')

Answer 1:

随着:not + :has它可以很容易地与一个选择来完成:

$('div.testdiv:not(:has(a[href="/link3"]))')

如果不引用的属性(“CSS标识”)的值,你需要躲避斜杠( /用两个反斜杠() \\ ):

$('div.testdiv:not(:has(a[href=\\/link3]))')

现场演示

如果可以有一个div只有一个锚,你可以这样做:

$('div.testdiv:has(a[href!="\\/link3")')


Answer 2:

您可以使用filter这个:

var elements = $('.testdiv').filter(function(){
    return !$(this).find('a[href=\\/link3]').length;
});


Answer 3:

$('div.testdiv a[href^=/link3').parents();


文章来源: Jquery: select all elements except one with specific child with specific attribute