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

Posted

技术标签:

【中文标题】jQuery 查找没有指定祖先的元素【英文标题】:jQuery find elements that do not have specified ancestor 【发布时间】:2019-05-03 07:54:42 【问题描述】:

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

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

我想选择所有未包含在a 标记中的img 标记。

我该怎么做?

【问题讨论】:

图片是否被p标签包裹? 【参考方案1】:

我用这段代码做到了:

$("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>

【讨论】:

【参考方案2】:

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

使用: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>

【讨论】:

太棒了!我会用的。【参考方案3】:

也可以使用父级:

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

【讨论】:

以上是关于jQuery 查找没有指定祖先的元素的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 查找祖先元素

jQuery 遍历 – 祖先

JavaScript 学习-44.jQuery 遍历查找方法

jQuery遍历-祖先

遍历祖先同胞后代

jQuery 遍历