【问题标题】:Adding toggle on a triple nested UL Elements在三重嵌套 UL 元素上添加切换
【发布时间】:2018-01-19 06:35:32
【问题描述】:

UL 的第一个嵌套似乎工作正常,但是当我单击 UL 的第二个嵌套时,我遇到的问题是它正在关闭第一个嵌套。我要显示 UL 的第二个巢穴。确切地说,我想显示 My Job Listings 的子元素。

<ul id="hb_sidebarmenu">
    <li>
        <a href="#"><div class="hb_menu_name"><i class="fa fa-home" aria-hidden="true"></i>Dashboard<i class="fa fa-angle-down" aria-hidden="true"></i></div></a>
        <ul class="submenu">
            <li><a href="#"><div class="hb_menu_name">View Profile</div></a></li>
            <li><a href="#"><div class="hb_menu_name">Edit Profile</div></a></li>
            <li><a href="#"><div class="hb_menu_name">Account Settings</div></a></li>
        </ul>
    </li>
    <li><a href="#"><div class="hb_menu_name"><i class="fa fa-users" aria-hidden="true"></i>My Clients</div></a></li>
    <li><a href="#"><div class="hb_menu_name"><i class="fa fa-clock-o" aria-hidden="true"></i>Pending Applications</div></a></li>
    <li>
        <a href="#"><div class="hb_menu_name"><i class="fa fa-envelope" aria-hidden="true"></i>Messages<i class="fa fa-angle-down" aria-hidden="true"></i></div></a>
        <ul class="submenu">
            <li>
                <a href="#"><div class="hb_menu_name">My Job Listings<i class="fa fa-angle-down" aria-hidden="true"></i></div></a>
                <ul class="submenu_1">
                    <li><a href="#"><div class="hb_menu_name">Web Developer</div></a></li>
                    <li><a href="#"><div class="hb_menu_name">Content Writer</div></a></li>
                </ul>
            </li>
            <li><a href="#"><div class="hb_menu_name">Inbox</div></a></li>
            <li><a href="#"><div class="hb_menu_name">Sent Items</div></a></li>
        </ul>
    </li>
    <li><a href="#"><div class="hb_menu_name"><i class="fa fa-university" aria-hidden="true"></i>Headquarters</div></a></li>
</ul>

脚本

jQuery(document).ready(function($){
    $("#hb_sidebarmenu li ul").hide();
    $("#hb_sidebarmenu li").click(function(){
        $(this).find('.submenu').toggle();
    });
});

【问题讨论】:

    标签: javascript jquery html css wordpress


    【解决方案1】:

    通过将您的 jQuery 函数从 find() 更改为 children(),它将仅针对直接子级,因此仅打开您单击的 li 正下方的子菜单。

    您的 jQuery 将如下所示:

    jQuery(document).ready(function($){
        $("#hb_sidebarmenu li ul").hide();
        $("#hb_sidebarmenu li").click(function(){
            $(this).children('.submenu').toggle();
        });
    });
    

    查看您的代码,我还建议您将目标元素更改为 a 标记。

    如果你想实现这一点,你可以调整你的 jQuery 以使用 next() 函数,如下所示:

    jQuery(document).ready(function($){
        $("#hb_sidebarmenu li ul").hide();
        $("#hb_sidebarmenu li a").click(function(e){
            if ($(this).next().is('ul')) {
                e.preventDefault();
                $(this).next().toggle();
            }
        });
    });
    

    【讨论】:

    • 嗨 Frits,我尝试了第二种解决方案。在第二个巢穴上一切正常,但点击第二个巢穴,即“我的工作列表”,UL 仍然没有显示。
    • 调试时点击 seoncd 嵌套没有进入函数 $("#hb_sidebarmenu > li > a").click(function(e) {});我想是因为 LI 的容器在上面,而 LI > a 在下面?
    • @BellaCarandang 非常欢迎你 :) 如果你想为它制作动画,你可以将 toggle() 更改为 toggleFade() 或 slideToggle() :) 干杯!
    • 这作为一个单独的问题可能会更好,但 imo 实现这一目标的最佳方法是 toggleClass('active-menu') 然后在您的 CSS 中分配 .active-menu {background-color:pink;} 作为一项规则。 Like this。如果您想进一步改进此功能,请确定您想要做什么,并提出一个新问题并显示您的尝试:) 欢迎您来ping我,并在您这样做时查看您的新问题:) 不要忘记搜索 SO,因为之前回答的可能性很高 :)
    • 得到了这个@fritz。谢谢 :) 记下怎么办,下次我会问的。赛亚
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2010-09-17
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多