我知道是否必须访问父级为child的所有父级为parent的孩子

$('.parent .child')


但是我不知道如何访问班级为parent的孩子的班级为child的父母。

我的情况是,我想将所有lmn类的div都涂成红色,这些div是abc类的前一个元素,而.abc的元素是pqr类。我的标记变成

<div class='lmn'>
    Prev of 1
</div>
<div class='abc'>
    1 - 1
    <div class='xyz'></div>
</div>
<div class='abc'>
1 - 2
    <div class='pqr'></div>
</div>
<div class='lmn'>
    Prev of 2
</div>
<div class='abc'>
    2 - 1
    <div class='xyz'></div>
</div>
<div class='abc'>
    2 - 2
    <div class='pqr'></div>
</div>


和jQuery

$(".pqr").closests('.abc').prevAll(".lmn:first").css("color", "red");


但这只会使第一个div vlmn红色,即使两个divs .lmn都满足我的情况。

我是否可以同时使用$(".pqr").closests('.abc').lmn替代我想使用的$.each

最佳答案

您将定位所有具有.abc.pqr,然后找到上一个元素,并根据类lmn进行过滤

$('.abc:has(.pqr)').prev('.lmn').css('color','red')


您没有作为lmn的前一个元素且也包含abc的任何pqr,因此没有元素符合您的条件。

FIDDLE

08-25 10:07