jQuery - multiple:not selector

时间:2011-08-22 08:45:30

标签: jquery jquery-selectors

我正在尝试定位不以“#”开头的页面范围链接,并且不包含内联javascript,但是我在确定如何正确构造选择器方面遇到了问题。

根据我用Google搜索的多个选择器,这应该有效,两个选择器都可以独立工作,而不是一起工作!

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

3 个答案:

答案 0 :(得分:121)

尝试使用

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

答案 1 :(得分:37)

您也可以尝试:

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

答案 2 :(得分:14)

jQuery - Multiple Selectors in a :not()?所示,这是正确的方法:

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

如果您已经让选择器在变量中否定,请不要忘记在逗号周围加上引号

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

无论何时由于某种原因需要对选择器进行分组,它都很有用。在代码中的其他地方使用相同的选择器组。


使用相同技术的实时示例

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

同样在http://jsfiddle.net/bmL8gz5j/


:not vs .not():出于性能原因,您应该使用:not而不是.not(),请参阅Performance differences between using ":not" and ".not()" selectors?