JQUERY:在.each循环查找类中

时间:2012-02-15 19:54:56

标签: jquery this each contains

我需要检查每个.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');    
    }
});

4 个答案:

答案 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(如果您愿意,还可以使用其他方法,可能使用parentnext),然后添加该类。

答案 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({...});