JQuery - несколько: не селектор - PullRequest
73 голосов
/ 22 августа 2011

Я пытаюсь нацелить ссылки на всю страницу, которые не начинаются с '#' и не включают встроенный JavaScript, но у меня возникают проблемы с поиском правильной структуры селектора.

Исходя из того, что я гуглил о нескольких селекторах, это должно сработать, оба селектора работают независимо, но не вместе!

$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...

Ответы [ 3 ]

124 голосов
/ 22 августа 2011

Попробуйте использовать

$('a:not([href*=javascript]):not([href^=#])') ...
39 голосов
/ 20 февраля 2014

Вы также можете попробовать:

$('a').not('[href^=#],[href*=javascript]')
15 голосов
/ 12 марта 2015

Как указано в jQuery - множественные селекторы в a: not ()? , это правильный способ сделать это:

$( 'a:not([href*=javascript],[href^=#])' )

Не забудьтеставьте кавычки вокруг запятых, если у вас уже есть селекторы для отрицания в переменных

var selOne = '[href*=javascript]';
var selTwo = '[href^=#]';
$('a:not(' + selOne + ',' + selTwo + ')')

Я допускаю, что код немного запутан, но у него есть преимущество, вы можете делать такие вещи, как это:

var selOne = '[href*=javascript], [href^=#]';
var selTwo = '.anotherSelector, .andAnother, .andSoOn';
$('a:not(' + selOne + ',' + selTwo + ')')

Это полезно, когда вам нужно по какой-то причине сгруппировать селекторы, т.е.используя ту же группу селекторов где-то еще в коде.


Живой пример, использующий ту же технику

$('div:not(.rose-flower,.bus-vehicle)').css('color','red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bus-vehicle">I am a bus</div>
<div class="strawberry-fruit">I am a strawberry</div>
<div class="rose-flower">I am a rose</div>

Также на http://jsfiddle.net/bmL8gz5j/


:not против .not(): из соображений производительности следует использовать :notвместо .not(), см. Различия в производительности между использованием селекторов ": not" и ".not ()"?

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