
[英]Select everything that have any extra classes different from 2 selectors (jQuery)
[英]CSS/JQuery selectors: Is there anyway to select classes in classes?
我们假设我们有以下标记:
<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');
提前致谢。
不,没有。 在jQuery和CSS中都没有。
即使存在用于对选择器的部分进行分组的功能伪类(例如,选择器4中即将发生的:matches()
),您仍然需要提供这些类的逗号分隔列表:
:matches(.t-shirt, .sweater).black.blue
不用说,上述选择器在任何浏览器中都不起作用。 如果你真的想要,你可以 自己实现它作为Sizzle扩展 ,但老实说我不会打扰。
你可以这样做:
var wanted = $('.black.blue').filter('.t-shirt, .sweater');
但
var wanted = $('.t-shirt.black.blue, .sweater.black.blue');
反正可能更有效(虽然我没有测试过)
如果唯一的目标是不使用逗号,您可以这样做:
var blackblue = $(".black.blue"),
tshirts = blackblue.filter(".t-shirt"),
sweaters = blackblue.filter(".sweater"),
both = tshirts.add(sweaters);
但是我不知道它有多好,除非它允许你组织得更好。
var selectionLevel1 = $(".t-shirt, .sweater").andSelf();
var finalSelection = $(".black", selectionLevel1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.