最近接的一个新的项目用到了树形菜单,决定跟大家分享下一个简单的树形菜单怎么实现。我也已经把它分装成jq的一个插件,里面的参数也可以根据使用自己去修改。接下来就是放代码了!

part one 样式内容

*{list-style: none;font-size: 16px;}
#wrapTree .menu-slide-sub{display: inline-block;width: 16px;height: 16px;background-image: url("../img/sub.png");/*background-position: 0 -320px;!*左右 上下*!*/line-height: 20px;/*vertical-align: middle;*/
}
#wrapTree  .tree-li-title{line-height: 20px;height: 20px;vertical-align: middle;cursor: default;}
#wrapTree  .menu-slide-add{display: inline-block;width: 16px;height: 16px;background-image: url("../img/add.png");/*background-position: 0 -304px;!*左右 上下*!*/line-height: 20px;/*vertical-align: middle;*/
}

part two HTML

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="distTree.css">
</head>
<body>
<div id="wrapTree"><ul><li class="tree-ul-li"><span class="tree-li-title"><a class="tree-toggle menu-slide-sub" href="javascript:;" id="mianTitle"></a>存储内容</span><ul><li class="tree-ul-li"><span class="tree-li-title"><a class="tree-toggle menu-slide-sub" href="javascript:;"></a>Driver 1</span><ul><li class="tree-ul-li"><div><input type="checkbox" class="inputBox"><label>连续测试</label></div><div><input type="checkbox" class="inputBox"><label>随机测试</label></div></li><li class="tree-ul-li"><div><input type="checkbox" class="inputBox"><label>连续测试</label></div><div><input type="checkbox" class="inputBox"><label>随机测试</label></div></li></ul></li><li class="tree-ul-li"><span class="tree-li-title"><a class="tree-toggle menu-slide-sub" href="javascript:;"></a>Driver 2 </span><ul><li class="tree-ul-li"><div><input type="checkbox" class="inputBox"><label>连续测试</label></div><div><input type="checkbox" class="inputBox"><label>随机测试</label></div></li><li class="tree-ul-li"><div><input type="checkbox" class="inputBox"><label>连续测试</label></div><div><input type="checkbox" class="inputBox"><label>随机测试</label></div></li></ul></li></ul></li></ul>
</div></body>
</html>

part three JS

<script>(function ($) {$.fn.tree = function (option) {let opt = {mainTitle: "#mianTitle",toggleCls: "menu-slide-add",//改变的classbingEvent: "click",//绑定的事件};option = $.extend({}, opt, option);$("#wrapTree .tree-li-title").on(option.bingEvent, ".tree-toggle", function () {let result = $("#mianTitle").hasClass(option.toggleCls);if (result) {$(option.mainTitle).parent().next().find("ul").hide();}$(this).toggleClass(option.toggleCls).parent().next("ul").slideToggle();});return this;}})($);$(function () {$("wrapTree").tree();})
</script>

在HTML部分我们的布局首先就要实现树形的布局,树形就是一种父子节点的形式,在上面我通过<ul><li><ul><li></li></ul></li></ul>的一种ul里面包裹着li,li里面包裹着ul的形式去实现。实现页面布局以后再是脚本。先引入jq的资源,jq的封装插件的形式是用$.fn在原型链上实现继承相当于js的$.prototye。我们把方法写在jquery的原型链上。树形菜单的显示隐藏就是通过点击当前的标题,显示隐藏ul里面的内容。toggle()方法就是用与显示隐藏的切换,toggleClass()就是实现样式类命的切换。通过on()方法做事件绑定,整个插件就完成了。

可能在这里大家会有个疑问为什么要return this,那是因为要保持jquery的链式结构,为什么它可以再引用后面的方法就是因为,返回的this,再继续调用原型链上的方法。

还有为什么要增加result的判断,那是我增加的用户体验,当一级菜单收拢以后,再打开,应该是只显示二级菜单,三级菜单是收拢的。因此做了这个判断,如果一级菜单收拢,只显示二级菜单。

这就是整个树形菜单的讲解了。

简单的jq实现树形菜单相关推荐

  1. 简单实用的二级树形菜单hovertree

    原创 hovertree是一个仿京东的树形菜单jquery插件,暂时有银色和绿色两种. 官方网址:http://keleyi.com/jq/hovertree/ 欢迎下载使用 查看绿色效果: http ...

  2. 树形菜单 php,简单的树形菜单_php

    table {font-size = 9pt} td {height = 10px} /** * 构造树,初值为0 */ function tree(n) { var id = new Array(& ...

  3. java ui代码实现_Java + Element-UI 实现简单的树形菜单

    一.简单入门级树形菜单实现(纯后台逻辑) 1.简介 (1)开发环境 IDEA + JDK1.8 + mysql 1.8 SpringBoot 2.2.6 + mybatis-plus 此处仅后台开发( ...

  4. elementui树状菜单tree_Java + Element-UI 实现简单的树形菜单

    一.简单入门级树形菜单实现(纯后台逻辑) 1.简介 (1)开发环境 IDEA + JDK1.8 + mysql 1.8 SpringBoot 2.2.6 + mybatis-plus 此处仅后台开发( ...

  5. 微信小程序 实现 树形菜单其实很简单

    话不多说,上代码 ➡️ 组件 资源下载(想直接下载组件,可以点击下载) 创建一个名为 treeList 的组件 组件代码 treeList.wxml: <view class="tre ...

  6. ztree实现树形菜单

    实现后的结果大致是这样的 其具体实现过程呢如下: 首先需要引入几个js和css样式: <link href="../../ext-res/ztree/css/demo.css" ...

  7. ActionScript 3.0 实现树形菜单。

    转自:http://www.cppblog.com/twzheng/archive/2007/10/19/34598.aspx 主要2个类:给了我不少启发.打算修改成xml,并加上拖动节点,添加删除节 ...

  8. Unity 引擎UGUI之自定义树形菜单(TreeView)

    先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...

  9. zTree树形菜单交互选项卡效果实现

    1. 添加自定义属性 page 2. 为 ztree 每个树形节点,添加点击事件 <!DOCTYPE html> <html><head><meta char ...

最新文章

  1. Python之Pandas:利用pandas实现行数据添加,即将字典格式的数据,按照行数据,从头开始循环添加到dataframe中
  2. 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
  3. 浅谈Java的Nio以及报Connection refused: no further information异常原因?
  4. H3C交换机配置远程管理配置
  5. “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
  6. Linux里面qt的可执行文件在命令行中可以打开,双击可执行文件打不开
  7. 数字化时代,Hightopo助力搭建光伏产业数据可视化
  8. AT24C02/04/08 地址理解
  9. 安装与部署Exchange server 2013
  10. uestc 1901 方方是个坏孩子
  11. 把ipa包上传入AppStore
  12. 分布式全站爬虫——以搜狗电视剧为例
  13. 阿里云服务器与本地不能复制粘贴
  14. 获取dataGridView当前行的值
  15. Navicat远程连接Oracle数据库
  16. 51 nod 1024 矩阵中不重复的元素
  17. 七段数码管的显示 滚动显示
  18. 无任何网络提供程序接受指定的网络路径。
  19. 4.12 通联支付面试题
  20. CHM电子书加密器(最新版V2009.9)

热门文章

  1. geoserver给天地图添加服务,给线加标注
  2. java中extends和implements的区别
  3. Arduino 实现物理非自锁按键触发变为软件上自锁状态保持控制方法
  4. 在VS2010中利用MFC读取word、ppt、excel格式文件
  5. 自动化测试学习daytwo(接口自动化概论)
  6. Redis入门指南:深入了解这款高性能缓存数据库
  7. Qt编写自定义控件:唱片播放控件
  8. python开发中级_针对中级Python开发人员的13个项目构想
  9. FCoin回来了?起死回生凭借何种“妙法”?
  10. c加加中print是什么意思_数学中质数和合数是什么意思