Como se indica en jQuery - Selectores múltiples en a: not ()? , esta es la forma correcta de hacer esto:
$( 'a:not([href*=javascript],[href^=#])' )
No olvide poner comillas entre comillas si ya tiene sus selectores para negar las variables
var selOne = '[href*=javascript]';
var selTwo = '[href^=#]';
$('a:not(' + selOne + ',' + selTwo + ')')
Admito que el código se vuelve un poco confuso pero tiene una ventaja, puedes hacer cosas como esta:
var selOne = '[href*=javascript], [href^=#]';
var selTwo = '.anotherSelector, .andAnother, .andSoOn';
$('a:not(' + selOne + ',' + selTwo + ')')
Es útil siempre que necesite agrupar selectores por alguna razón, es decir. utilizando el mismo grupo de selectores en otra parte del código.
Un ejemplo vivo usando la misma técnica.
$('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>
También en http://jsfiddle.net/bmL8gz5j/
:not
vs .not()
: Por motivos de rendimiento, debería utilizar en :not
lugar de .not()
, consulte Diferencias de rendimiento entre el uso de los selectores ": not" y ".not ()"?