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

时间:2012-05-19 22:01:36

标签: 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>

现在我想要选择<div>个班级testdiv,但div的孩子<a>属性href="/link3"除外,如何做到这一点{ jQuery的?

我知道我可以这样做:

$('div.testdiv')

3 个答案:

答案 0 :(得分:7)

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

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

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

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

Live DEMO

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

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

答案 1 :(得分:1)

您可以使用filter

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

答案 2 :(得分:-2)

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