Jak wskazano w jQuery - Multiple Selectors in a: not ()? , oto właściwy sposób:
$( 'a:not([href*=javascript],[href^=#])' )
Nie zapomnij umieścić cudzysłowów wokół przecinków, jeśli masz już selektory do negacji w zmiennych
var selOne = '[href*=javascript]';
var selTwo = '[href^=#]';
$('a:not(' + selOne + ',' + selTwo + ')')
Przyznaję, że kod jest trochę zagmatwany, ale ma tę zaletę, że można zrobić takie rzeczy:
var selOne = '[href*=javascript], [href^=#]';
var selTwo = '.anotherSelector, .andAnother, .andSoOn';
$('a:not(' + selOne + ',' + selTwo + ')')
Jest to przydatne, gdy z jakiegoś powodu musisz pogrupować selektory, np. używając tej samej grupy selektorów w innym miejscu w kodzie.
Przykład na żywo wykorzystujący tę samą technikę
$('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>
Również na http://jsfiddle.net/bmL8gz5j/
:not
vs .not()
: Ze względu na wydajność powinieneś :not
raczej używać zamiast .not()
, zobacz Różnice w wydajności między używaniem selektorów „: not” i „.not ()”?