简单的 ul li 树形菜单

简单的 ul li 树形菜单

在实际开发中,我们经常遇到树形菜单,闲暇之余,特此简单研究了一下,欢迎吐槽!


前言

所谓的树形菜单,无非就是 ul li的嵌套使用,如果有两级目录,就需要在li里再嵌套一层ul li,以此类推。

本例效果:
1.点击的li如果是叶子节点,则该节点变为红色字体;
2.点击的不是叶子节点,则展示子节点,再次点击,则影藏子节点。

代码块

html代码,例如:

   <ul>
      <li>
        <em></em><a>1234</a>
        <ul>
          <li><a>1</a></li>
          <li><a>2</a></li>
          <li><a>3</a></li>
          <li><a>4</a></li>
        </ul>
      </li>
      <li>
        <em></em><a>5678</a>
        <ul>
          <li>
            <em></em>
            <a>5</a>
            <ul>
              <li><a>51</a></li>
              <li><a>52</a></li>
              <li><a>53</a></li>
              <li><a>54</a></li>
            </ul>
          </li>
          <li><a>6</a></li>
          <li><a>7</a></li>
          <li><a>8</a></li>
        </ul>
      </li>
      <li><a>9</a></li>
      <li><a>10</a></li>
      <li><a>11</a></li>
    </ul>

css代码,例如:

ul {
  list-style: none;
}
ul li {
  cursor: pointer;
}
ul li a {
  display: block;
}
ul li ul {
  display: none;
  padding-left: 20px;
}
em {
  display: inline-block;
  height: 14px;
  width: 14px;
  margin-right: 5px;
  float: left;
  position: relative;
  top: 5px;
  background: url('../images/ico/toggle-ico.png') 0 0 no-repeat;
}
.active {
  color: red;
}
.open > a {
  color: red;
}
.open > em {
  background-position: -23px 0;
}

js代码,例如:

 $('li>a,li>em').click(function(event) {
        /* Act on the event */
        if($(this).parent('li').find('ul').length>0){
          if($(this).siblings('ul').is(':hidden')){
            $(this).parent('li').addClass('open').children('ul').show();
            $(this).parent('li').siblings().removeClass('open').children('ul').hide();
          }else{
            $(this).parent('li').removeClass('open').children('ul').hide();
          }
        }else{
          $(this).parent('li').siblings().removeClass('open');
        }
        $(this).parent('li').siblings().children('ul').hide();
        $(this).addClass('active').parent('li').siblings('li').find('a').removeClass('active');
      })

效果图

这里写图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要创建一个基于 jQuery 的树形菜单,可以按照以下步骤进行操作: 1. 首先,确保您已引入了 jQuery 库。可以从 jQuery 官方网站下载最新版本的 jQuery,并在 HTML 文件中引入它,例如: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 在 HTML 中创建一个容器元素,用于承载树形菜单的结构。例如: ```html <div id="tree-menu"></div> ``` 3. 使用 JavaScript/jQuery 编写代码来生成树形菜单的结构和行为。这里我们将使用递归函数来循环遍历菜单数据,并生成相应的 HTML 结构。以下是一个简单的示例: ```javascript // 菜单数据 var menuData = [ { label: '菜单项1', children: [ { label: '子菜单项1' }, { label: '子菜单项2' } ] }, { label: '菜单项2', children: [ { label: '子菜单项3' }, { label: '子菜单项4', children: [ { label: '子子菜单项1' }, { label: '子子菜单项2' } ] } ] } ]; // 递归生成树形菜单的函数 function generateTreeMenu(parentElement, data) { var ul = $('<ul>'); // 创建一个 ul 元素 data.forEach(function(item) { var li = $('<li>').text(item.label); // 创建一个 li 元素,并设置文本内容 if (item.children && item.children.length > 0) { generateTreeMenu(li, item.children); // 如果有子菜单,则递归生成子菜单 } ul.append(li); // 将 li 添加到 ul 中 }); parentElement.append(ul); // 将 ul 添加到父元素中 } // 调用函数生成树形菜单 generateTreeMenu($('#tree-menu'), menuData); ``` 以上代码会根据 `menuData` 数据生成一个嵌套列表结构,形成树形菜单。 您可以根据自己的需求修改数据和样式,使其适应您的项目。希望对您有帮助!如果您有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值