javascript - 如何使用jquery在子菜单下动态添加子菜单?

标签 javascript jquery css

我需要使用 jquery 动态创建以下菜单栏结构。

-Setting
--System
---user
---group
---acl
--Vresource
---vms
---vnet-conf
--Configuration
---template
---image

在我的案例中,系统的子菜单{user,group,acl} 属于设置而不是系统菜单。

我在我的 .js 文件中编写了以下代码。

 var li_item = '<li id="li_'+tab_name+'" class="'+tabClass+' '+parent+'"><a href="#">'+tab_info.title+'<span class="icon-caret-left icon-large plusIcon right"></span></a></li>';

    //if this is a submenu... div#menu ul#navigation li.vresources-tab
    if (parent.length) {
        var children = $('div#menu ul#navigation li.'+parent);

        //if there are other submenus, insert after last of them
        if (children.length){
            $(children[children.length-1]).after(li_item);
        }else{ //instert after parent menu
            $('div#menu ul#navigation li#li_'+parent).after(li_item);
        }
    } else { //not a submenu, instert in the end
        $('div#menu ul#navigation').append(li_item);
    };

此代码生成以下 html 片段。

<div class="menu-navZ">
<ul id="navigation" class="tabs vertical">
<li id="li_settings-tab" class="topTab tab_with_no_content">
<li id="li_system-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_vresources-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_configuration-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_templates-tab" class="subTab subsubTab configuration-tab" style="display: none;">
<li id="li_images-tab" class="subTab subsubTab configuration-tab" style="display: none;">
<li id="li_vms-tab" class="subTab subsubTab vresources-tab" style="display: none;">
<li id="li_vnetconf-tab" class="subTab subsubTab topTab vresources-tab" style="display: none;">
<li id="li_users-tab" class="subTab subsubTab system-tab" style="display: none;">
<li id="li_groups-tab" class="subTab subsubTab system-tab" style="display: none;">
<li id="li_acls-tab" class="subTab subsubTab system-tab" style="display: none;">
</ul>
</div>

如您所见,<li>子菜单的语句以不正确的方式生成,它应该在正确的菜单下,就像最后三个语句用户、组和 acl 应该在系统下。

预期输出:

<div class="menu-navZ">
<ul id="navigation" class="tabs vertical">
<li id="li_settings-tab" class="topTab tab_with_no_content">
<li id="li_system-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_users-tab" class="subTab subsubTab system-tab" style="display: none;">
<li id="li_groups-tab" class="subTab subsubTab system-tab" style="display: none;">
<li id="li_acls-tab" class="subTab subsubTab system-tab" style="display: none;">

<li id="li_vresources-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_vms-tab" class="subTab subsubTab vresources-tab" style="display: none;">
<li id="li_vnetconf-tab" class="subTab subsubTab topTab vresources-tab" style="display: 

<li id="li_configuration-tab" class="subTab topTab tab_with_no_content settings-tab" style="display: none;">
<li id="li_templates-tab" class="subTab subsubTab configuration-tab" style="display: none;">
<li id="li_images-tab" class="subTab subsubTab configuration-tab" style="display: none;">
none;">
</ul>
</div>

请帮我解决这个问题。

最佳答案

您的菜单元素没有正确嵌套的原因是您没有构建嵌套 <ul>代码中的元素,你只是想嵌套 <li>与其他元素 <li>元素。每个子菜单都应该是一个新的无序列表,嵌套在先前的无序列表中。

关于javascript - 如何使用jquery在子菜单下动态添加子菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054382/

相关文章:

Javascript 'this' 上下文与 jQuery

javascript - 计算 DIV 元素的最大/最小高度

jquery 只在 Debug模式下工作

javascript - 谷歌浏览器扩展 : Use Javascript inside webkit notifications?

javascript - 主干渲染 View 未显示...仅在控制台中

javascript - 不太严格的电话正则表达式

javascript - 使用outerHTML重写html时避免页面刷新

javascript - jquery密集的文本阴影和模糊的背景颜色

jquery - 使用 pagebeforeshow jquery 跨多个页面执行一个函数

javascript - 将字符串大写但不将前三个字母大写