Вопрос выбора jQuery. Выберите все узлы, с которых НЕ НАЧИНАЕТСЯ (строка) - PullRequest
22 голосов
/ 03 марта 2009

Попытка собрать здесь довольно сложный селектор jQuery, и возникли проблемы.

По сути, я пытаюсь захватить все якоря, которые 1) не имеют "rel" из "facebox", и ИЛИ 2) не имеют " href ", начинающийся с" mailto ".

Вот что я пытался сделать:

$('a[rel!=facebox], a[href!^="mailto"]')

Небольшие вариации этого, похоже, не работают. Есть ли лучший способ сделать это?

Эти селекторы работают по отдельности, но не при последовательном расположении в одном и том же селекторе:

$('a:not([rel=facebox]), a:not([href^=mailto])')

Окончательное решение: У нас есть победитель!

$('a:not([rel=facebox],[href^=mailto])')

Ответы [ 3 ]

50 голосов
/ 03 марта 2009

Вы хотите : не селектор

$("a:not([rel=facebox],[href^=mailto])");

РЕДАКТИРОВАТЬ: я украл ваш ответ для правильности

3 голосов
/ 03 марта 2009

Хорошо, мистер Джереми Рикеттс. Jquery испортил вашу голову. Вы пытаетесь связать логику селектора ... вроде как методы jQuery. Во втором селекторе (a[href!^="mailto"]) вы пытаетесь сказать ... НЕ вещи, которые содержат ЭТОТ атрибут. То, что вы говорите, это «Поиск всех вещей, которые не являются mailto» и «Поиск всех вещей, которые содержат mailto». Это как светофильтры ... если вы фильтруете красный свет ... и устанавливаете желтый светофильтр сверху ... вы не фильтруете для оранжевого света ... вы просто отфильтровываете ВСЁ (извините за натяжение аналогии) , Итак, вы пытаетесь использовать псевдо-селектор: нет.

Как это - $(a:not([href^=mailto:])).whateverJqueryMethodYouWant();

EDIT: Хорошо, теперь, когда вы правильно задали вопрос ... вы можете сделать это так - $(a:not([href^=mailto:] , [rel=facebox])).whateverJqueryFunctionYouWant();

0 голосов
/ 11 июля 2012

Не должно ли быть:

$("a:not([rel='facebox'],[href^='mailto'])");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...