Estoy tratando de apuntar a enlaces de toda la página que no comienzan con un '#' y no incluyen javascript en línea, pero tengo problemas para descubrir cómo estructurar el selector correctamente.
Según lo que busqué en Google sobre múltiples selectores, esto debería funcionar, ambos selectores funcionan de forma independiente, ¡pero no juntos!
$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...
jquery
jquery-selectors
Hill79
fuente
fuente
Respuestas:
Intenta usar
$('a:not([href*=javascript]):not([href^=#])') ...
fuente
$('a:not([href*=javascript],[href^=#])')
También puedes probar:
$('a').not('[href^=#],[href*=javascript]')
fuente
$('a').not(selOne + ',' + selTwo + ',' + selX);
:not
lugar de.not()
por cierto, por razones de rendimiento. ver stackoverflow.com/questions/8845811/…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 ()"?fuente