使用变量从DOM查询中排除多个元素

时间:2017-10-18 14:06:38

标签: javascript

我有这个HTML:

<div class="elem">
</div>
<div class="elem-1">
</div>
<div class="elem-2">
</div>

<!--Select the ones below-->
<div>
</div>
<p class="other-class">
</p>

我有这段代码:

var elems = document.querySelectorAll(".elem, .elem-1, .elem-2[,...]");
var otherElems = document.querySelectorAll(":not..."); //can I reuse elems here?

我可以使用elems变量来选择除elems中的所有元素以外的所有元素吗?

编辑:这看起来像代码重复:

var foos1 = document.querySelectorAll(".bars1, .bars2, .bars3, #bar1, #bar2[,...]");
var foos2 = document.querySelectorAll(".bars-1, .bars-2, .bars-3, #bar-1[,...]");
var foos3 = ...
.
.
.
var foosN

//list all former elements again
var noFoos = document.querySelectorAll(":not(.bars1, ..., .bars-3, #bar-1......)");

相反,我想重用已存储这些元素的变量。

类似的东西:

var noFoos = document.querySelectorAllBut(foos1, foos2, foos3,...);

1 个答案:

答案 0 :(得分:2)

您可以将第一个选择器放在not

var elements = document.querySelectorAll(".elems, .elems-more, .elems-more-more[,...]");
var otherElements = querySelectorAll("div:not(.elems, .elems-more, .elems-more-more[,...])");

此外,您可以将选择器放在变量中以避免重复。但这可能不是最有效的解决方案。