layui从后台动态添加nav 渲染失败

layui从后台动态添加nav渲染失败

问题,即使使用了 element.init()也会有部分失败,比如鼠标悬浮后没有变色反应在这里插入图片描述解决
之前 ul 都是写在html中的 只有在js中使用append 添加标签到ul后,这样就会形成上图的情况,所以 从ul开始都要在js中写
错误
在这里插入图片描述

正确html
在这里插入图片描述

js

 /*左边导航*/
        var leftNav = $("#leftNav");
        leftNav.append("<ul id=\"menuinfo\" class=\"layui-nav layui-nav-tree\" lay-filter=\"test\">")
         //生成一级标题

                $.get("/MenuShow.do",{pid:0},function (data) {
                    console.log(data.length);
                    console.log(data);
                    var menuinfo = $("#menuinfo");
                    //遍历响应数据
                    for (var i = 0; i <data.length ; i++) {
                        menuinfo.append("<li class=\"layui-nav-item\"><a href=\"javascript:;\">"+data[i].mname+"</a></li>")
                    }
                    element.render('nav','test');
                })

记得添加依赖
在这里插入图片描述
效果图
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 layui 的菜单组件 `layui-nav` 和 `layui-nav-item` 来生成动态菜单。具体步骤如下: 1. 在数据库中创建一个菜单表,包含菜单的 id、名称、链接、父菜单 id 等字段。 2. 使用后端语言(比如 PHP、Java、Python 等)从数据库中获取菜单数据,并将数据格式化为 JSON 格式。 3. 在前端页面中引入 layui 的依赖,并使用 `layui-nav` 和 `layui-nav-item` 组件来生成菜单。示例代码如下: ```html <!-- 引入 layui 的依赖 --> <link rel="stylesheet" href="/layui/css/layui.css"> <script src="/layui/layui.js"></script> <!-- 渲染菜单 --> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <!-- 循环遍历菜单数据 --> {{# layui.each(d.menuData, function(index, item){ }} <!-- 判断是否为一级菜单 --> {{# if(item.parentId == 0){ }} <li class="layui-nav-item"> <!-- 显示菜单名称 --> <a href="{{ item.url }}">{{ item.name }}</a> <!-- 判断是否有子菜单 --> {{# if(item.children.length > 0){ }} <dl class="layui-nav-child"> <!-- 循环遍历子菜单 --> {{# layui.each(item.children, function(index, item){ }} <dd><a href="{{ item.url }}">{{ item.name }}</a></dd> {{# }); }} </dl> {{# } }} </li> {{# } }} {{# }); }} </ul> <!-- 引入菜单数据 --> <script> layui.use(['jquery', 'element'], function(){ var $ = layui.$; var element = layui.element; // 获取菜单数据 $.ajax({ url: '/getMenuData', success: function(res){ // 渲染菜单 element.render('nav'); } }); }); </script> ``` 4. 在后端语言中实现 `/getMenuData` 接口,返回菜单数据。示例代码如下(使用 PHP 语言): ```php // 获取菜单数据 function getMenuData(){ // 查询数据库获取菜单数据 $menuData = array( array( 'id' => 1, 'name' => '首页', 'url' => '/', 'parentId' => 0, 'children' => array(), ), array( 'id' => 2, 'name' => '菜单1', 'url' => '', 'parentId' => 0, 'children' => array( array( 'id' => 21, 'name' => '子菜单1', 'url' => '/menu1/1', 'parentId' => 2, 'children' => array(), ), array( 'id' => 22, 'name' => '子菜单2', 'url' => '/menu1/2', 'parentId' => 2, 'children' => array(), ), ), ), array( 'id' => 3, 'name' => '菜单2', 'url' => '', 'parentId' => 0, 'children' => array( array( 'id' => 31, 'name' => '子菜单3', 'url' => '/menu2/3', 'parentId' => 3, 'children' => array(), ), ), ), ); // 将菜单数据转换为 JSON 格式返回 return json_encode($menuData); } ``` 注意:以上示例代码仅为演示用途,实际使用时需要根据实际情况进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值