jquery实现树形菜单完整代码

首先介绍一下jquery实现树形菜单的原理和步骤:

  1. 在html中准备好容器,用于放置树形菜单;
  2. 通过ajax请求或静态数据,获取树形结构的数据,可以是数组形式或json格式;
  3. 遍历数据,根据层级关系,生成菜单的html代码,包括ul、li等元素;
  4. 监听菜单项的点击事件,收缩/展开子菜单,并设置样式;
  5. 将生成的菜单html代码插入到容器中。

下面展示完整的jquery实现树形菜单的代码:

HTML:

<div class="menu-container">
  <ul class="menu">
  </ul>
</div>

CSS:

.menu-container {
  width: 300px;
  border: 1px solid #ccc;
  overflow: auto;
}

.menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu li {
  line-height: 1.5;
}

.menu li a {
  display: block;
  padding: 5px;
  text-decoration: none;
  color: #666;
}

.menu li.active > a {
  background-color: #eee;
}

.menu li ul {
  margin: 0;
  padding: 0;
  display: none;
}

.menu li.active > ul {
  display: block;
}

JS:

$(function () {
  var data = [
    {
      id: 1,
      label: "根节点",
      children: [
        {
          id: 2,
          label: "子节点 1",
          children: [
            {
              id: 3,
              label: "子节点 1-1"
            }
          ]
        },
        {
          id: 4,
          label: "子节点 2",
          children: [
            {
              id: 5,
              label: "子节点 2-1",
              children: [
                {
                  id: 6,
                  label: "子节点 2-1-1"
                }
              ]
            }
          ]
        }
      ]
    }
  ];

  // 生成菜单
  function generateMenu(data, parent) {
    $.each(data, function (index, item) {
      var li = $("<li>")
        .attr("data-id", item.id)
        .appendTo(parent);

      var a = $("<a>").text(item.label).appendTo(li);

      if (item.children && item.children.length > 0) {
        var ul = $("<ul>").appendTo(li);

        generateMenu(item.children, ul);
      }
    });
  }

  // 收缩/展开子菜单
  function toggleMenu(el) {
    var li = $(el).parent("li");

    if (li.hasClass("active")) {
      li.removeClass("active");
    } else {
      li.addClass("active");
    }
  }

  // 监听菜单项的点击事件
  $(document).on("click", ".menu li a", function (event) {
    event.preventDefault();

    toggleMenu(this);
  });

  // 生成菜单项
  generateMenu(data, $(".menu"));
});

这份代码中,先定义了一组数据,生成树形菜单时遍历该数据。通过 generateMenu 函数生成菜单html代码输出到容器中,同时设置了样式。

代码中使用了事件委托,监听菜单项的点击事件。点击菜单项后,通过调用 toggleMenu 函数收缩/展开子菜单,并设置样式。

下面给出一个使用ajax请求获取树形结构数据的示例:

$(function () {
  // 通过ajax请求获取树形结构数据
  $.ajax({
    url: "menu.json",
    dataType: "json"
  }).done(function (data) {
    // 生成菜单项
    generateMenu(data, $(".menu"));
  });

  // 其他代码同上
});

上面的代码中,通过ajax请求一份json格式的数据,获取数据后调用 generateMenu 函数生成菜单项。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery实现树形菜单完整代码 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • CSS或者JS实现鼠标悬停显示另一元素

    实现鼠标悬停显示另一元素,可以使用CSS或者JS来实现。在此,我将分别介绍两种方式的实现方法,并给出具体的示例说明。 使用CSS实现 使用CSS可以通过:hover选择器实现鼠标悬停显示另一元素的效果。具体步骤如下: 首先需要确定鼠标悬停时要显示的元素,并在CSS中设置display为none,即元素默认不显示。 接着,需要为要悬停的元素添加:hover选择…

    css 2023年6月10日
    00
  • JavaScript webpack模块打包器如何优化前端性能

    JavaScript webpack模块打包器可以通过优化打包的方式来提升前端性能,下面是一些可以实施的优化方法: 1.代码分离 JavaScript将整个代码库打包到一个文件中会导致加载速度变慢,代码分离允许将代码分成多个文件,这些文件仅在需要时才会被加载。Webpack提供了很多方便的代码分离机制,包括手动和自动分离。 手动分离: // a.js imp…

    css 2023年6月9日
    00
  • 如何用jquery控制表格奇偶行及活动行颜色

    下面是如何用jquery控制表格奇偶行及活动行颜色的攻略: 1. 准备工作 在进行下一步之前,我们需要满足以下前提条件: 引入jquery库: 在html代码中通过以下代码引入jquery库。 html<script src=”https://cdn.jsdelivr.net/npm/jquery@3.5.1″></script> 确…

    css 2023年6月10日
    00
  • 浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预

    浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预 JS对html标签属性的干预 JS可以通过操作document对象来修改和获取HTML标签的属性。例如,可以使用document.getElementById(‘idName’)方法获取页面上一个id值为 idName 的HTML元素,然后修改该元素的属性。 下面是一个例子,我们创建一个<…

    css 2023年6月9日
    00
  • CSS3的几个标签速记(推荐)

    下面是对“CSS3的几个标签速记(推荐)”的完整攻略: CSS3的几个标签速记 CSS3 版本相比 CSS2.1 版本有了很多新增的功能和标签。本文介绍了这些 CSS3 标签的速记方式,以方便开发者更加快速地编写样式。 边框 圆角 使用 border-radius 属性可以设置元素的圆角大小: /* 设置四个角的圆角大小为 10px */ div { bor…

    css 2023年6月10日
    00
  • div+css样式表的id和class常用命名规则

    使用div+css样式表的id和class时,命名规则非常重要,良好的命名规则可以提高代码的可读性、可维护性和易于理解。下面详细讲解div+css样式表的id和class常用命名规则。 命名规则 id的命名规则 id只能出现一次,不能重复。 id名字应该具有描述性,尽量体现出id关联元素的功能或语义。 id名字应该简短小写,用连字符 – 分隔单词,不要用下划…

    css 2023年6月9日
    00
  • VsCode 使用基础_VsCode入门小技巧

    VsCode 使用基础 环境准备 在开始使用VsCode之前,我们需要对其环境进行一些准备工作: 安装VsCode:从官网 https://code.visualstudio.com/ 下载并安装VsCode; 安装必要的插件:在VsCode菜单栏中选择“扩展”,搜索并安装以下插件: Markdown All in One:用于编写markdown文件 Br…

    css 2023年6月10日
    00
  • 几款好用的前端开发编辑器推荐安利

    下面是详细讲解“几款好用的前端开发编辑器推荐安利”的完整攻略。 几款好用的前端开发编辑器推荐安利 1. Visual Studio Code Visual Studio Code是由微软公司开发的一款非常受欢迎的轻量级文本编辑器。它支持多种编程语言,包括JavaScript、HTML、CSS、Python等,并且有着丰富的扩展库,可以实现代码高亮、语法检测、…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部