jQuery-multiple:не селектор


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

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

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

3 ответа:

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

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

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

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

как указано в 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 vs .not(): по причинам производительности, вы должны использовать :not, а не .not() см. различия в производительности между использованием ": не "и".не()" селекторы?