jQuery:选择给定类的所有元素,特定ID除外


146

这可能很简单。

我想选择给定类的所有元素thisClass,除了id是thisId

即等同于(其中-/减号表示删除):

$(".thisClass"-"#thisId").doAction();

Answers:


290

使用:not选择器

$(".thisclass:not(#thisid)").doAction();

如果您有多个ID或选择器,则只需使用逗号定界符,此外:

(".thisclass:not(#thisid,#thatid)").doAction();


3
如果您想排除多个班级怎么办?THX
SoulMagnet 2014年

13
从文档:All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)因此就使用逗号分隔的选择做多(".thisclass:not(#thisid,#thatid)").doAction();
大通

使用这样的单引号-$(“。thisclass:not('#thisid')”)。doAction();
穆罕默德·拉贾

或者,如果您想绑定到具有特定类名的元素的所有子元素(除了一个),您可以这样:$('。thisclass:not(#id).otherclass')。doAction()
dalmate

如果我有一个标准代码,例如:$('#some')。notimportant,$('#another')。dosomethingelse怎么办,而我想避免对动态指定的特定ID执行?
Botea Florin


7

您可以像以下示例一样使用.not函数来删除具有完全ID,包含特定单词的ID,以单词开头的ID等的项。请参阅http://www.w3schools.com/jquery/jquery_ref_selectors .asp,以获取有关jQuery选择器的更多信息。

按确切ID忽略:

 $(".thisClass").not('[id="thisId"]').doAction();

忽略包含单词“ Id”的ID

$(".thisClass").not('[id*="Id"]').doAction();

忽略以“我的”开头的ID

$(".thisClass").not('[id^="my"]').doAction();

6

我只是抛出一个JS(ES6)答案,以防有人寻找它:

Array.from(document.querySelectorAll(".myClass:not(#myId)")).forEach((el,i) => {
    doSomething(el);
}

更新(当我发布原始答案时可能有可能,但是无论如何现在都添加此内容):

document.querySelectorAll(".myClass:not(#myId)").forEach((el,i) => {
    doSomething(el);
});

这摆脱了Array.from用法。

document.querySelectorAll返回NodeList
阅读此处以了解有关如何对其进行迭代(以及其他操作)的更多信息:https : //developer.mozilla.org/zh-CN/docs/Web/API/NodeList



2

.not()方法与选择整个元素一起使用也是一种选择。

如果您想直接对该元素执行其他操作,此方法可能会很有用。

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.