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

时间:2010-03-31 07:43:54

标签: jquery jquery-selectors

这可能很简单。

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

即。相当于(其中 - / minus暗示删除)的东西:

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

6 个答案:

答案 0 :(得分:262)

使用:not selector

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

如果您有多个ID或选择器,则只需使用逗号分隔符:

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

答案 1 :(得分:29)

或者采用.not()方法

https://api.jquery.com/not/

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

答案 2 :(得分: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/en-US/docs/Web/API/NodeList

答案 3 :(得分:5)

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

选择器的文档:http://api.jquery.com/category/selectors/

答案 4 :(得分:4)

您可以使用 .not 功能,例如以下示例,删除具有完全ID的项目,包含特定单词的id,以单词开头的ID等...请参阅{{3有关jQuery选择器的更多信息。

按完全ID忽略:

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

忽略包含单词“Id”

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

忽略以“我的”

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

答案 5 :(得分:2)

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

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

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();