我们假设我们有以下标记:
<div class="t-shirt black blue">Example</div>
<div class="t-shirt white blue">Example</div>
<div class="sweater black blue">Example</div>
<div class="sweater black red">Example</div>
<div class="sweater white red">Example</div>
<div class="hat black blue">Example</div>
<div class="hat black red">Example</div>
<div class="hat white red">Example</div>
是否有选择t-shirt
或sweater
黑色和蓝色与一个选择器?我的意思是,不使用逗号分隔的选择器。
例如,我不想做以下事情:
var wanted = $('.t-shirt.black.blue, .sweater.black.blue');
无论如何都要做类似以下的事情吗? (我知道它不起作用):
var wanted = $('(.t-shirt, .sweater).black.blue');
提前致谢。
答案 0 :(得分:6)
不,没有。无论是jQuery还是CSS。
即使存在用于对选择器的部分进行分组的功能伪类(例如,选择器4中即将出现的:matches()
),您仍然需要提供这些类的逗号分隔列表:
:matches(.t-shirt, .sweater).black.blue
毋庸置疑,上述选择器在任何浏览器中都不起作用。如果你真的想,你可以 implement it yourself as a Sizzle extension,但老实说我不会打扰。
答案 1 :(得分:2)
你可以这样做:
var wanted = $('.black.blue').filter('.t-shirt, .sweater');
但是
var wanted = $('.t-shirt.black.blue, .sweater.black.blue');
无论如何,可能会更有效(我还没有测试过)
答案 2 :(得分:0)
如果唯一目标是不使用逗号,则可以执行此操作:
var blackblue = $(".black.blue"),
tshirts = blackblue.filter(".t-shirt"),
sweaters = blackblue.filter(".sweater"),
both = tshirts.add(sweaters);
但是,我不知道它有多好,除非它允许你组织得更好。
答案 3 :(得分:0)
var selectionLevel1 = $(".t-shirt, .sweater").andSelf();
var finalSelection = $(".black", selectionLevel1);