jQuery-multiple:не селектор
Я пытаюсь нацелить ссылки на всю страницу, которые не начинаются с " # " и не включают встроенный javascript, но у меня возникли проблемы с выяснением того, как правильно структурировать селектор.
основываясь на том, что я погуглил о нескольких селекторах, это должно работать, оба селектора работают независимо, просто не вместе!
$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...
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>
также на http://jsfiddle.net/bmL8gz5j/
:not
vs.not()
: по причинам производительности, вы должны использовать:not
, а не.not()
см. различия в производительности между использованием ": не "и".не()" селекторы?