Я должен найти некоторые элементы, которые не имеют указанного предка.Пример кода:
<a href="#"> <img src="pic1.jpg" /> </a> <p> <img src="pic2.jpg" /> </p>
Я хочу выбрать все теги img, не обернутые в тег a.
img
a
Как это сделать?
Можно также использовать родитель:
var images = $('img').filter(function(){ if(!$(this).parent().is('a')) { return $(this); } });
Вы можете сделать эту работу, используя более простое решение.
Используйте :not() вместо .filter( function ).
: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>
Я сделал это с помощью этого кода:
$("img").filter(function(){ return $(this).closest('a').length === 0 }).css("border", "3px solid red");