不是 jQuery 中的类选择器

IT技术 javascript jquery jquery-selectors
2021-01-27 20:30:56

是否有一个简单的选择器表达式来不选择具有特定类的元素?

<div class="first-foo" />
<div class="first-moo" />
<div class="first-koo" />
<div class="first-bar second-foo" />

我只想获得前三个 div 并尝试

$(div[class^="first-"][class!="first-bar"])

但这会接收所有内容,因为最后一个 div 包含的不仅仅是第一个栏。有没有办法在这样的表达式中使用占位符?类似的东西

$(div[class^="first-"][class!="first-bar*"]) // doesn't seem to work

任何其他可能有帮助的选择器?

3个回答

您需要:not()选择器:

$('div[class^="first-"]:not(.first-bar)')

或者,该.not()方法:

$('div[class^="first-"]').not('.first-bar');
没错,没错!:) 我希望我的评论不会被认为是批评;我宁愿添加到您已经很有帮助的问题中。
2021-03-15 20:30:56
@rinogo 现在绝大多数浏览器都支持 querySelectorAll,速度更快,但情况并非总是如此。
2021-03-22 20:30:56
@Daniel,是的,但如果,那么立即获得性能提升是一个超级简单的更改:)
2021-03-31 20:30:56
请注意,由于 :not() 比.not () (jsperf.com/jquery-css3-not-vs-not快 2-3 倍,您可能需要使用 :not()。但是,jQuery 文档建议使用 .not() 代替,因为它更具可读性(api.jquery.com/not-selector)。希望这有助于有人在两者之间做出决定!
2021-04-01 20:30:56
谢谢!!禁用除我的过滤框以外的所有输入键。$("input:not(.rgFilterBox)").keydown(function (e) { if (e.keyCode == 13) { return false; } return true; });
2021-04-06 20:30:56

您可以使用:not过滤器选择器:

$('foo:not(".someClass")')

not()方法:

$('foo').not(".someClass")

更多信息:

"如果将其用作 CSS 选择器则应省略。
2021-03-28 20:30:56
@BoltClock:其中有空格的值是必需的,我已经养成了始终指定这些值的习惯:)
2021-04-10 20:30:56

您可以在“not”方法中编写一个 jQuery 选择器:

$('div[class^="first-"]').not($('.first-bar'))

感谢您的解释!,现在它可以帮助某人!
2021-03-26 20:30:56
@lonesomeday 已经回答了这个确切的答案!你有什么要补充的?
2021-04-07 20:30:56
首先,我的答案是不同的。其次,我有这样一个案例,我需要排除一个孩子的class。为此,我在“not”方法中得到了 jQuery 选择器的帮助。我刚写的不是($('.first-bar').parent())。我认为我的版本会帮助某人。
2021-04-09 20:30:56