JQUERY:在.each循环中查找类

发布于 2025-01-05 18:45:46 字数 659 浏览 0 评论 0原文

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

查询:

 $('.archive_blocks').each(function(){

    if ( $("a.archive_blocks_fa_active").parents(this).length == 1 ) { 
        alert('OK'); 
    } else {        
        alert('NO');    
    }
});

I need check every .archive_blocks for containing .archive_blocks_fa_active.
If is it true, apply css to .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');    
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

温柔一刀 2025-01-12 18:45:46

您可以使用 has() 方法将匹配元素集减少为具有与选择器或 DOM 元素匹配的后代的元素。

$('.archive_blocks').each(function(){
   if ($(this).has(".archive_blocks_fa_active").length) { 
        $(this).find('.archive_blocks_sa').addClass('className'); 
   } 
});

You can use has() method reduces the set of matched elements to those that have a descendant that matches the selector or DOM element.

$('.archive_blocks').each(function(){
   if ($(this).has(".archive_blocks_fa_active").length) { 
        $(this).find('.archive_blocks_sa').addClass('className'); 
   } 
});
2025-01-12 18:45:46

假设我已经正确理解了您的问题,您不能只这样做而不用担心 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),然后添加班级。

Assuming I've understood your question correctly, can't you just do this and not bother with the each:

$(".archive_blocks a.archive_blocks_fa_active")
    .closest(".archive_blocks")
    .find(".archive_blocks_sa")
    .addClass("whatever");

This uses a descendant selector which matches any a.archive_blocks_fa_active element that is a descendant of an .archive_blocks element. It then finds the related .archive_blocks_sa (there would be other ways of doing that, perhaps using parent and next if you prefer) and then adds the class.

莫多说 2025-01-12 18:45:46
$('.archive_blocks .archive_blocks_fa_active').parent().find('a.archive_blocks_sa').css(...);
$('.archive_blocks .archive_blocks_fa_active').parent().find('a.archive_blocks_sa').css(...);
妖妓 2025-01-12 18:45:46
$('.archive_blocks').has(".archive_blocks_fa_active")
                    .find('.archive_blocks_sa')
                    .css({...}); 
$('.archive_blocks').has(".archive_blocks_fa_active")
                    .find('.archive_blocks_sa')
                    .css({...}); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文