这可能很简单。
我想选择给定类thisClass
的所有元素,除非id为thisId
。
即。相当于(其中 - / minus暗示删除)的东西:
$(".thisClass"-"#thisId").doAction();
答案 0 :(得分:262)
$(".thisclass:not(#thisid)").doAction();
如果您有多个ID或选择器,则只需使用逗号分隔符:
(".thisclass:not(#thisid,#thatid)").doAction();
答案 1 :(得分:29)
答案 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();
答案 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();