我正在尝试定位不以'#'开头并且不包含嵌入式javascript的页面范围的链接,但是我在确定如何正确构造选择器时遇到问题。
根据我搜索过的关于多个选择器的信息,这应该可以工作,两个选择器都可以独立工作,而不是一起工作!
$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...
我正在尝试定位不以'#'开头并且不包含嵌入式javascript的页面范围的链接,但是我在确定如何正确构造选择器时遇到问题。
根据我搜索过的关于多个选择器的信息,这应该可以工作,两个选择器都可以独立工作,而不是一起工作!
$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...
Answers:
尝试使用
$('a:not([href*=javascript]):not([href^=#])') ...
$('a:not([href*=javascript],[href^=#])')
如jQuery所示-: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()
,请参见使用“:not”和“ .not()”选择器之间的性能差异?