动态插入菜单栏,js失效的问题

最进在练习做一个权限管理系统,需要根据用户的权限加载菜单栏。用的是layui前端框架,后端模板也是基于layui,layui总体还是好用的,虽然有些地方还不够完善。在使用过程中,我主要遇到两点问题,由于对前端不是很熟,花了一天时间才解决。

1、动态插入dom后,子菜单无法显示

根据权限获得菜单栏的数据,并以此来动态插入DOM,那么免不了要构造DOM节点。开始时,我是一个节点一个节点的构造,比如正确的结构是这样:

        <ul id="Nav" class="layui-nav layui-nav-tree">

            <li class="layui-nav-item">
                <a href="javascript:;">
                    <i class="layui-icon">&#xe665;</i>
                    <em>信息维护</em>
                </a>
                <dl class="layui-nav-child">
                    <dd><a href="/Home/ChartInformation">图表基础信息管理</a></dd>
                </dl>
                <dl class="layui-nav-child">
                    <dd><a href="/Home/SeriesInfomation">图表系列信息管理</a></dd>
                </dl>
                <dl class="layui-nav-child">
                    <dd><a href="/Home/FilterConditionInfo">图表条件信息管理</a></dd>
                </dl>

                <dl class="layui-nav-child">
                    <dd><a href="/Home/DataSourceInfo">数据源信息管理</a></dd>
                </dl>
            </li>
        </ul>

一个<li></li>标签为一级菜单,而一个<dl></dl>为二级菜单,在插入节点时,一定要先把整个dom都构造好,再插入到指定节点中,插入前,一定要保证dom完整。不能断断续续的分几次插入,这样很可能导致渲染不了。实际html中是存在这个节点的。

2、将完整的DOM插入后,JS失效,或者没有实现一些功能

这个问题我真的是服了,浪费我太多时间了,查了很多资料-------~~~~~~~~~~~~~~~当把菜单栏的dom都动态插入后,样式渲染正常、显示正常,但是当点击二级菜单时,直接新建了一个窗口显示页面,而不是新建一个tab,在右侧显示。经过排查,发现制作这个后台模板的作者写了一个方法,我动态插入dom后,这个方法失效了。但是把菜单栏写成静态的确没有任何问题,功能正常。他的js代码是这样的:

$("#Nav a")click(function(){

doingsomething();

});

奶奶的,打断点发现这个节点根本找不到,所以就不可能执行啊,但很奇怪,平时我都是这么写的,都没有问题。改为:

   $(document).on("click", "#Nav a", function (event) {

   doingsomething();

})

问题完美解决,奶奶的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值