相对于另一个选择器的匹配集结果

Matched set results relative to another selector

假设我正在尝试检索具有 active 个子元素的元素:

$('.a .active').parents('.a');

有没有办法在初始查询中实现这一点,您可以将选择器指定为一个参数,并将结果集的选择器指定为另一个参数?

类似于:

$('.a .active', '.a');

您可以使用 :has() selector 以便 select .a 包含 .active 后代元素的元素:

$('.a:has(.active)');

值得指出的是 $('.active', '.a') 是一个 context selector,它将 select .active 元素作为 .a 元素的后代。

换句话说,

$('.active', '.a');

本质上等同于:

$('.a').find('.active');

上面的两个查询都会匹配以下内容:

<div class="a">
    <span class="active">This would be selected by both of the above.</span>
</div>

因此 select 或 $('.a .active', '.a') 会尝试将 select .active 后代元素嵌套在 .a 元素内,然后在另一个 .a 元素 (example):

$('.a .active', '.a')
<div class="a">
    <div class="a">
        <span class="active">Select this.</span>
    </div>
</div>