jquery 选择器使得 children 不包含多个 类?

jquery selector such that children don't contain multiple classes?

我正在尝试用 class="my-rating" 编写 select 或哪些 select 的 <div> 仅当它们的 children 包含 none 下面的 3 个 类。

示例html:

<div class="my-rating" id="parentA">
    <div class="foo"></div>
</div>
<div class="my-rating" id="parentB">
</div>
<div class="my-rating" id="parentC">
    <div class="rating-full-star"></div>
    <div class="rating-full-star"></div>
    <div class="rating-full-star"></div>
    <div class="rating-half-star"></div>
    <div class="rating-empty-star"></div>
    <div class="bar"></div>
</div>
<div class="my-rating" id="parentD">
    <div class="rating-full-star"></div>
    <div class="rating-full-star"></div>
    <div class="rating-full-star"></div>
    <div class="rating-half-star"></div>
    <div class="rating-empty-star"></div>
</div>

我想要 select parentAparentB 并排除 C 和 D。

像这样:

$('.my-rating').children().filter(':not(.rating-full-star):not(.rating-half-star):not(.rating-empty-star)')

除了这个家伙抢走了所有的children,而不是parent。我也试过:

$('.my-rating :not(.rating-full-star,.rating-half-star,.rating-empty-star)')

但这并没有抢到太多物品。我可以在这里做什么?

如果您已经正确选择了子标签,您可以从中获取父标签。

$('.my-rating').children().filter(':not(.rating-full-star):not(.rating-half-star):not(.rating-empty-star)').parent();

这将为 arr 中的每个子元素 return 一个父元素,如果您只想要一个,因为它们对于每个兄弟元素都是相同的,您可以使用:

$('.my-rating').children().filter(':not(.rating-full-star):not(.rating-half-star):not(.rating-empty-star)').parent()[0];

你在这里:

$('.my-rating').not(':has(.rating-full-star, .rating-half-star, .rating-empty-star)');