【问题标题】:jquery find li with certain class and add another classjquery找到某个类的li并添加另一个类
【发布时间】:2011-09-15 13:21:01
【问题描述】:

如果 li 有 class='parent',我不知道如何循环 ul 并添加一个类

我的新课总是能得到每一个 li...

这是代码

$('.navigation').find('li').each(function() {
        if($(this).hasClass('parent')) {
            $(this).find('li').each(function() {
                $(this).addClass("nivel_1");
                $(this).css('display', 'none');
                if($(".nivel_1").hasClass('parent')) {
                    $(".nivel_1").find('li').each(function() {
                        $(this).addClass("nivel_2");
                        $(this).css('display', 'none');
                    });
                }
            });
        }
    });

这就是我得到的

我该怎么办?

谢谢!

普卢达

【问题讨论】:

    标签: jquery class find


    【解决方案1】:

    所以你有一个树形视图,而其中有一个列表的有一个名为 parent 的类。

    我还没有测试过这个(我不知道 jQuery 是否有内置的东西来做这个),但你可以尝试类似的东西:

    $(document).ready(function(){
        $('.navigation').find('li.parent > ul > li').addClass('nivel_X');
        $('.nivel_X').each(function(){
            var level = $(this).parents('.parent').size();
            $(this).removeClass('nivel_X').addClass('nivel_'+level);
        });
    });
    

    这个想法是,您将使用“父”类为 li 的每个直接子级添加一个类,然后将该类命名为 nivel_X,其中 X 被它在上面找到的父级数量替换...

    以下代码也有效,我更喜欢它:

    $('.navigation').find('li.parent > ul > li').addClass(function() {
        return 'nivel_'+$(this).parents('.parent').size();
    });
    

    【讨论】:

    • 那里有几个错别字,我把它从一个衬里改成了一个循环,但它可以工作(测试过)。
    • 完美,非常感谢,与这个代码相比,我的代码真的很糟糕。 parent > ul > li 与“搜索父类中 ul 中的所有 li 是一样的,对吗?那是我总是迷路的那种东西 :-) 非常感谢。
    • "parent > ul > li" 表示 UL 必须是 parent 的直系后代,LI 必须是 UL 的直系后代。例如,如果您在父级中有一个 DIV,其中有一个 UL,则该选择器不会捕获。
    • 从 v1.4 开始,addClass 接受一个函数。我没有注意到这一点,但我可能会检查 X 的值,而不是删除它并循环执行。我将保留代码原样,因为它可以工作,但我只是想我会插话。
    【解决方案2】:

    你真的不需要做一个循环。不过老实说,您的代码似乎比您的问题描述要复杂得多,所以也许这太简单了。

    $('li.parent').addClass("nivel_1");
    

    【讨论】:

    • 我也这么认为,但如果你注意到他的第二级添加 nivel_2 而不是 nivel_1...所以我认为他想要一个调用,将在 nivel 末尾添加正确的深度级别
    • 大声笑,嘿男孩...有时我觉得自己很愚蠢...只是另一个帮助,如果我的 nivel_1 也有 li.parent,我如何将 nivel_2 添加到每个?我正在尝试制作带有子项目的菜单。谢谢!
    • @Gazillion ,是的,这正是我想要实现的目标
    • 您能否举一个您尝试实现的 HTML 示例,类似于上面的屏幕截图?
    • 抱歉还没上线,它在我的本地 joomla 中。感谢您的快速回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2012-02-17
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多