Напротив .find () - PullRequest
       50

Напротив .find ()

3 голосов
/ 27 апреля 2010

Есть ли противоположность .find ()?

Где $('.myclass').except('#myid');

Получил бы все элементы с .myclass, кроме элемента с #myid. Я знаю, что мог бы сделать $('.myclass[id=myid]') в этом примере, но кажется, что это будет полезно в других случаях.

Спасибо

EDIT:

Спасибо за ответы! Похоже, я просто пропустил просмотр .not() и :not() в документации.

Ответы [ 8 ]

10 голосов
/ 27 апреля 2010
$('.myclass').not('#myid');

http://api.jquery.com/not/

4 голосов
/ 27 апреля 2010

Попробуйте .not() & ndash; удаляет любой элемент, соответствующий селектору.

3 голосов
/ 27 апреля 2010

Если вам нужен одиночный строковый селектор, используйте это:

$('.myClass:not(#myid)')

Используется селектор псевдокласса :not() вместо функции фильтра .not().

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

Альтернатива с использованием .not() может быть быстрее, в зависимости от количества элементов, соответствующих .myclass, поскольку поиск элемента по идентификатору является очень быстрой операцией, поэтому исключить его из набора довольно быстро.

3 голосов
/ 27 апреля 2010

$('.myclass').not('#myid')

1 голос
/ 27 апреля 2010

Я думаю, что вы ищете не ()

1 голос
/ 27 апреля 2010

Generic

$('selector:not(selector)').doStuff()

Конкретная

$('.myclass:not(#myid)').doStuff() 

Я считаю, что это правильное решение.

Визит http://api.jquery.com/not-selector/

Дополнительные примеры использования и примеры.

0 голосов
/ 10 апреля 2012

Вы все не правы. Not не является строго противоположностью Find, потому что Not ищет не только текущие элементы, но не потомки, а Find () будет искать среди потомков, чтобы увидеть, соответствует ли определенный критерий. Вместо этого вместо Find есть .Not (: has (...)).

0 голосов
/ 27 апреля 2010

Да, есть. Вы можете использовать либо селектор jQuery :not, либо функцию .not(). Пример кода:

$('.something').not('.else')
$('.something:not(.not-me):not(.neither-me)')

Как примечание, CSS3 имеет нативный :not псевдокласс .

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