jQuery – 多个:不是select器

我试图瞄准不是以'#'开头的页面范围的链接,不包括内嵌的JavaScript,但我有问题搞清楚如何正确地构造select器。

基于我已经search了多个select器这应该工作,两个select器独立工作,只是不在一起!

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

尝试使用

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

你也可以尝试:

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

正如jQuery中所示:在多个select器中:not()? ,这是做到这一点的正确方法:

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

如果你已经有了你的select器来否定variables,不要忘了把逗号放在逗号周围

 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 + ')') 

这是有用的,当你需要组合select器出于某种原因,即。 在代码中的其他地方使用相同的select器组。


一个使用相同技术的现场示例

 $('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>