jQuery – multiple: pas de sélecteur

J’essaie de cibler les liens à l’échelle de la page qui ne commencent pas par un «#» et n’incluent pas le javascript en ligne, mais j’ai du mal à comprendre comment structurer le sélecteur correctement.

Basé sur ce que j’ai googlé sur les sélecteurs multiples ceci devrait fonctionner, les deux sélecteurs fonctionnent indépendamment, juste pas ensemble!

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

Essayez d’utiliser

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

Vous pouvez également essayer:

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

Comme indiqué dans jQuery – Multiple Selectors dans un: not ()? , c’est la bonne façon de le faire:

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

N’oubliez pas de mettre des guillemets autour des virgules si vous avez déjà vos sélecteurs à annuler dans les variables

 var selOne = '[href*=javascript]'; var selTwo = '[href^=#]'; $('a:not(' + selOne + ',' + selTwo + ')') 

J’avoue que le code devient un peu déroutant mais il a un avantage, vous pouvez faire des choses comme ceci:

 var selOne = '[href*=javascript], [href^=#]'; var selTwo = '.anotherSelector, .andAnother, .andSoOn'; $('a:not(' + selOne + ',' + selTwo + ')') 

C’est utile chaque fois que vous avez besoin de grouper des sélecteurs pour une raison quelconque, c.-à-d. en utilisant le même groupe de sélecteurs ailleurs dans le code.


Un exemple vivant utilisant la même technique

 $('div:not(.rose-flower,.bus-vehicle)').css('color','red'); 
  
I am a bus
I am a strawberry
I am a rose