Выберите элементы, чьи дети не содержат определенные элементы в jQuery
Я хочу выбрать все div на странице, чьи дети не содержат элемент с определенным классом.
Я могу выбрать элементы, чьи потомки do содержат класс с:
$('div').has('.myClass');
Поэтому я просто хочу, чтобы это было наоборот.
Ответ 1
Я бы использовал ".filter()":
var theDivs = $('div').filter(function() {
return $(this).find('.myclass').length === 0;
});
Ответ 2
Простой $("div:not(:has(.myClass))") выполнит эту работу.
Как он работает внутри jQuery?
1) $("div") - получает все DIV из документа.
2) :not(:has(.myClass)) - Это два утверждения, вложенные в другое. Теперь jQuery выполняет :has(.myClass) в приведенных DIV на вышеуказанном шаге и получает все DIV с именем класса 'myClass'
3) :not() - Этот псевдоселекторный метод будет применяться ко всем DIV с шага 1 по сравнению с DIV, полученными в результате второго заявления, чтобы найти DIV без ".myClass". Это возможно путем циклического перехода через все DIV с шага 1 и сравнения DIV со второго шага.