有没有更简洁的方法来选择包含某些类的祖先元素中的元素



我根据祖先元素是否包含类在代码中选择了很多元素,并想知道是否有更简洁的方法可以做到这一点。

例如,要选择嵌套在具有"橙色"类的<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");

这样,您将能够以编程方式toggleClassremoveClass,并且是最佳方法之一。

最新更新