JQuery - несколько: не селектор

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

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

Как указано в 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>