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

假设我有这样的事情:

    

现在我想选择类testdiv所有

s,除了具有属性href="https://stackoverflow.com/link3"的子div ,如何用jQuery做到这一点?

我知道我可以这样做:

 $('div.testdiv') 

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

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

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

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

现场演示

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

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

您可以使用filter

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