我需要检查每个.archive_blocks以包含.archive_blocks_fa_active。 如果是,则将css应用于.archive_blocks_sa。
<div class="archive_blocks">
<a href="#" class="archive_blocks_fa_active">
<img width="142" height="142" src="#">
</a>
<div class="archive_blocks_name">
<a href="#" class="archive_blocks_sa">Ilustrations</a>
</div>
</div>
JQUERY:
$('.archive_blocks').each(function(){
if ( $("a.archive_blocks_fa_active").parents(this).length == 1 ) {
alert('OK');
} else {
alert('NO');
}
});
答案 0 :(得分:2)
假设我已正确理解你的问题,你不能这样做,而不是打扰each
:
$(".archive_blocks a.archive_blocks_fa_active")
.closest(".archive_blocks")
.find(".archive_blocks_sa")
.addClass("whatever");
这使用了一个后代选择器,它匹配作为a.archive_blocks_fa_active
元素后代的任何.archive_blocks
元素。然后它会找到相关的.archive_blocks_sa
(如果您愿意,还可以使用其他方法,可能使用parent
和next
),然后添加该类。
答案 1 :(得分:2)
您可以使用has()
方法将匹配元素集减少到具有与选择器或DOM元素匹配的后代的元素。
$('.archive_blocks').each(function(){
if ($(this).has(".archive_blocks_fa_active").length) {
$(this).find('.archive_blocks_sa').addClass('className');
}
});
答案 2 :(得分:1)
$('.archive_blocks .archive_blocks_fa_active').parent().find('a.archive_blocks_sa').css(...);
答案 3 :(得分:0)
$('.archive_blocks').has(".archive_blocks_fa_active")
.find('.archive_blocks_sa')
.css({...});