代码之家  ›  专栏  ›  技术社区  ›  Dr.eel

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

  •  1
  • Dr.eel  · 技术社区  · 6 年前

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

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

    我想全选 img 标签未包装在 a 标签。

    我该怎么做?

    3 回复  |  直到 6 年前
        1
  •  3
  •   Dr.eel    6 年前

    我用这个密码做的:

    $("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
  •  1
  •   Mohammad DefenestrationDay    6 年前

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

    使用 :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
  •  0
  •   kshitij    6 年前

    也可以使用父对象:

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