jQuery查找没有指定祖先的元素

时间:2018-12-01 10:10:04

标签: jquery html jquery-selectors selector

我必须找到一些没有指定祖先的元素。 示例代码:

<a href="#">
  <img src="pic1.jpg" />
</a>
<p>
  <img src="pic2.jpg" />
</p>

我想选择所有未包装在img标签中的a标签。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

我是用以下代码完成的:

$("img").filter(function(){
  return $(this).closest('a').length === 0
}).css("border", "3px solid red");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#">
  <img src="pic1.jpg" />
</a>
<p>
  <img src="pic2.jpg" />
</p>

答案 1 :(得分:1)

您可以使用更简单的解决方案来完成这项工作。

使用:not()代替.filter( function )

$("img:not(a img)").css("border", "3px solid red");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#">
  <img src="pic1.jpg" />
</a>
<p>
  <img src="pic2.jpg" />
</p>

答案 2 :(得分:0)

也可以使用父级:

var images =  $('img').filter(function(){
  if(!$(this).parent().is('a')) {
    return $(this);  
  }
});