jQuery的“不以...开头”选择器相反是什么:[^=]

5
我有一些以下的div标签:
<div class="magazine"></div>
<div class="newsletter"></div> // I need to take this div
<div class="may-moon"></div>

如果我需要选取 class 属性以 "ma" 开头的 div 元素,我会使用 $('div[class^="ma"]')。那么相反的选择器是什么呢?谢谢。

2
相反是指“不以…开始”还是“以…结束”? - Dennis
"opposite" 的意思是不以 "ma" 开头吗?还是你想要用 endswith 而不是 startswith? - Daniel Gimenez
不是选择器,了解一下。 - epascarello
不以...开头 - Aldi Unanto
3个回答

14

相反的做法是使用 jQuery :not()

$('div:not([class^="ma"])')

3
或者,可以使用.not()方法:$('div').not('[class^="ma"]'),该方法会选择所有<div>元素,但不包括具有以"ma"开头的类名的元素。 - Andrew Marshall
3
除了:not更快之外,其他都不变:http://jsperf.com/not-vs-not32(在Chrome上进行测试,对于其他浏览器可能是错误的说法)。 - Karl-André Gagnon
1
@Karl-André Gagnon:http://jsperf.com/not-vs-not32/2 - .not() 参数中有一个错别字。不过这并不影响结果。 - zerkms
在Firefox中更快。IE 8的表现不确定。 - Simon C

3
你可以使用负面过滤功能"not",如下所示:$('div').not('[class^="ma"]'),或者使用负面选择器":not",如下所示:$('div:not([class^="ma"])')(由Karl-André Gagnon指出)。

1
它不是选择器,而是过滤函数。选择器是 :not() - zerkms
3
一些友善的建议:请不要对用户进行回答方式的讲解,尤其是告诉他们删除回答。我们通过踩来表示帖子的有用或无用,如果你认为它是复制品,你可以标记它。很多用户认为像你刚才留下的评论是粗鲁的。 - Benjamin Gruenbaum
1
@BenjaminGruenbaum 感谢你的建议。答案与原始答案不同,但基本上是相同的答案,只是在两分钟后给出。看起来很便宜。我试图给jackmno一个机会在我投票之前删除它,以防它是意外的。 - Daniel Gimenez

0
你需要使用 :not() 选择器 来实现这个功能,因为在 jQuery 中并不存在与 [^=]* 完全相反的选择器。
:not() Selector - Selects all elements that do not match the given selector.

了解更多关于Jquery选择器的内容

存在一个相反的选择器 -

Attribute Not Equal Selector [name!="value"] - Select elements that either don’t have the specified attribute, or do have the specified attribute but not with a certain value.

但是在使用这个!选择器时,您需要提供类的全名。

$('div[class!="magazine"][class!="may-moon"]')  

试一下


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接