3

假设我有这样的事情:

<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')
4

3 回答 3

7

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

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

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

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

现场演示

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

$('div.testdiv:has(a[href!="\\/link3")')
于 2012-05-19T22:08:35.380 回答
1

您可以filter为此使用:

var elements = $('.testdiv').filter(function(){
    return !$(this).find('a[href=\\/link3]').length;
});
于 2012-05-19T22:06:03.817 回答
-2
$('div.testdiv a[href^=/link3').parents();
于 2012-05-19T22:03:53.803 回答