我有一个工作选择器,我正用它来使用Tampermonkey增强网站。
我发现我想要使用的元素都包含title
类和unread
类。我这样选择了它们。
var sel = document.querySelectorAll('.title.unread');
for (var i = 0, e; e = sel[i]; i++) {
e.title = e.innerText;
}
现在我发现我也想要同时具有title
类和read
类的元素。
所以逻辑上我想要一个能完成pseduocode .title + (.read OR .unread)
实现这一目标最优雅的方法是什么?
答案 0 :(得分:3)
这是你在看什么?
var sel = document.querySelectorAll('.title.unread, .title.read');
答案 1 :(得分:2)
var sel = document.querySelectorAll('.title.unread, .title.read');
console.log(sel);

<div class="title unread"></div>
<div class="title"></div>
<div class="title read"></div>
&#13;
虽然CSS选择器之间没有括号,但有:
,
.a.b
因此,根据Boolean algebra和distributive property,您的表达式可以展开:
.title AND (.read OR .unread) == (.title AND .read) OR (.title AND .unread)
答案 2 :(得分:1)
您可以使用逗号分隔CSS选择器。在这种情况下,您希望将它们分开,如下所示:
var sel = document.querySelectorAll('.title.read, .title.unread');
如果您想扩展 css选择器的知识,可以访问w3schools CSS Selectors Reference。在这里,您可以找到有关如何使用每个选择器的示例。