我根据祖先元素是否包含类在代码中选择了很多元素,并想知道是否有更简洁的方法可以做到这一点。
例如,要选择嵌套在具有"橙色"类的<div>
或<main>
元素中的所有<p>
和<blockquote>
元素,我正在编写。
$('main.orange p, div.orange p, div.orange blockquote, main.orange blockquote').css('background-color', 'orange');
这实现了我想要的,但是对于我想选择的所有元素,写出div.className element, main.className element
有点乏味。有没有办法选择嵌套在任何祖先中具有"橙色"类的所有<p>
元素?
您可以考虑跳过标签名称,以防您没有使用同一类的其他标签。此外,使用笛卡尔方式将帮助您最小化此选择器:
$(".orange").find("blockquote, p");
这是最好的简化方法之一。或者,如果您特定于标签:
$("main.orange, div.orange").find("blockquote, p");
以上是一个精确的简化,而我倾向于使用比上述样式更多的第一种样式,只要类名不被其他元素使用并且我不想选择它们。
另外,我注意到您正在元素上设置一些CSS属性。我恳请您仅使用jQuery(或JavaScript(进行交互,并完全使用CSS进行演示。
有一个类,比如说.js-orange
并将其应用于所有这些元素。对于他们,在 CSS 中,尝试添加以下内容:
.orange-applied {background-color: orange;}
然后在jQuery中,只需执行以下操作:
$(".js-orange").addClass("orange-applied");
这样,您将能够以编程方式toggleClass
或removeClass
,并且是最佳方法之一。