Подтвердить что ты не робот

JQuery selector question. Выберите все узлы, которые НЕ НАЧАЛИСЬ (строка)

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

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

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

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

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

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

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

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

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

Ответ 1

Вы хотите : not selector

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

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

Ответ 2

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

Нравится это - $(a:not([href^=mailto:])).whateverJqueryMethodYouWant();

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

Ответ 3

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

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