Выберите все элементы, которые не являются потомками указанного элемента - PullRequest
2 голосов
/ 06 февраля 2011

Используя селектор jQuery, можно ли выбрать все элементы, которые не являются потомками элементов, из другого селектора.

Например, я хотел бы выбрать все теги a, которые не являются потомками тега th. Единственный способ увидеть это сейчас - это

$('a').filter(function () {
   return $(this).closest('th').size() == 0
})

Ответы [ 2 ]

6 голосов
/ 06 февраля 2011

Предполагая, что вы ищете потомков (поскольку элемент a в качестве родственного элемента для элементов th не является допустимым HTML), вы можете использовать псевдо-селектор :not, чтобы сделать это:

$('a:not(th a)');

Это должно быть довольно быстро в современных браузерах, использующих document.querySelectorAll, но может быть медленнее, чем оригинал для более старых версий IE.

Смотрите простую демонстрацию здесь: http://jsfiddle.net/JR5sP/

0 голосов
/ 06 февраля 2011

Предполагая, что вы действительно хотите выполнить заданный вопрос (независимо от недопустимого факта HTML) и отфильтровать элементы с определенным родным братом,

Вы можете сделать это:

$('a').filter(function() {
    return $(this).siblings('b').length == 0;
}).css('color', 'orange');

HTML:

<div>
    <b>Hello there</b>
    <a>Don't select me!</a>
</div>

<div>
    <a>Select me!</a>
    <a>Select me too!</a>
</div>

См. http://jsfiddle.net/JR5sP/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...