jQuery实现可收缩展开的级联菜单实例代码

请看下面的攻略:

jQuery实现可收缩展开的级联菜单

思路

1.先通过jQuery选择器选中所有菜单项,将其隐藏;

2.再对顶级菜单项添加点击事件,当点击顶级菜单时展开其下面的子菜单项;

3.如果子菜单下又存在下一级子菜单项,那么点击展开该菜单项的时候,应该再展开其下面的子菜单项;

4.在点击菜单项时,要先将其下属的菜单项全部隐藏,再展开当前菜单项对应的子菜单项。

代码实现

1. HTML代码

本次实例中,我们选用如下的HTML代码:

<div class="menu">
  <ul>
    <li><a href="#">一级菜单1</a></li>
    <li>
      <a href="#">一级菜单2</a>
      <ul>
        <li><a href="#">二级菜单1</a></li>
        <li><a href="#">二级菜单2</a></li>
        <li>
          <a href="#">二级菜单3</a>
          <ul>
            <li><a href="#">三级菜单1</a></li>
            <li><a href="#">三级菜单2</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li>
      <a href="#">一级菜单3</a>
      <ul>
        <li><a href="#">二级菜单4</a></li>
        <li><a href="#">二级菜单5</a></li>
      </ul>
    </li>
  </ul>
</div>

2. CSS代码

为了让菜单更易辨识和美观,可以写一些CSS样式。本例代码如下:

/* 清除默认样式 */
*{
  margin: 0;
  padding: 0;
}
/* 一级菜单样式 */
.menu ul>li>a{
  display: block;
  padding: 5px 10px;
  text-decoration: none;
  background-color: #e1e1e1;
  border-bottom: 1px solid #dee1e3;
}
/* 二级菜单样式 */
.menu ul>li>ul>li>a{
  display: block;
  padding: 5px 20px;
  text-decoration: none;
  background-color: #f7f7f7;
}

/* 三级菜单样式 */
.menu ul>li>ul>li>ul>li>a{
  display: block;
  padding: 5px 30px;
  text-decoration: none;
  background-color: #fff;
}

3. jQuery代码

根据前面的思路,我们来写jQuery代码,实现可收缩展开的级联菜单,代码如下:

$(function(){
  // 隐藏所有的菜单子项
  $('.menu ul ul').hide();

  // 点击一级菜单
  $('.menu ul li').click(function(){
    // 如果当前菜单下有二级菜单
    if($(this).children('ul').length>0){
      // 隐藏其他的二级菜单
      $('.menu ul ul').not($(this).children('ul')).hide();
      // 展开或收起当前菜单下的二级菜单
      $(this).children('ul').slideToggle();
      return false;
    }
  });

  // 点击二级菜单
  $('.menu ul li ul li').click(function(){
    // 如果当前菜单下有三级菜单
    if($(this).children('ul').length>0){
      // 隐藏其他的三级菜单
      $('.menu ul ul ul').not($(this).children('ul')).hide();
      // 展开或收起当前菜单下的三级菜单
      $(this).children('ul').slideToggle();
      return false;
    }
  });
});

示例说明

示例一

请看下面的代码,效果图请看右侧:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>示例一:可收缩展开的级联菜单</title>
  <style>
    /* 清除默认样式 */
    *{
      margin: 0;
      padding: 0;
    }
    /* 一级菜单样式 */
    .menu ul>li>a{
      display: block;
      padding: 5px 10px;
      text-decoration: none;
      background-color: #e1e1e1;
      border-bottom: 1px solid #dee1e3;
    }
    /* 二级菜单样式 */
    .menu ul>li>ul>li>a{
      display: block;
      padding: 5px 20px;
      text-decoration: none;
      background-color: #f7f7f7;
    }

    /* 三级菜单样式 */
    .menu ul>li>ul>li>ul>li>a{
      display: block;
      padding: 5px 30px;
      text-decoration: none;
      background-color: #fff;
    }
  </style>
</head>
<body>
  <div class="menu">
    <ul>
      <li><a href="#">一级菜单1</a></li>
      <li>
        <a href="#">一级菜单2</a>
        <ul>
          <li><a href="#">二级菜单1</a></li>
          <li><a href="#">二级菜单2</a></li>
          <li>
            <a href="#">二级菜单3</a>
            <ul>
              <li><a href="#">三级菜单1</a></li>
              <li><a href="#">三级菜单2</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">一级菜单3</a>
        <ul>
          <li><a href="#">二级菜单4</a></li>
          <li><a href="#">二级菜单5</a></li>
        </ul>
      </li>
    </ul>
  </div>
  <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
  <script>
    $(function(){
      // 隐藏所有的菜单子项
      $('.menu ul ul').hide();

      // 点击一级菜单
      $('.menu ul li').click(function(){
        // 如果当前菜单下有二级菜单
        if($(this).children('ul').length>0){
          // 隐藏其他的二级菜单
          $('.menu ul ul').not($(this).children('ul')).hide();
          // 展开或收起当前菜单下的二级菜单
          $(this).children('ul').slideToggle();
          return false;
        }
      });

      // 点击二级菜单
      $('.menu ul li ul li').click(function(){
        // 如果当前菜单下有三级菜单
        if($(this).children('ul').length>0){
          // 隐藏其他的三级菜单
          $('.menu ul ul ul').not($(this).children('ul')).hide();
          // 展开或收起当前菜单下的三级菜单
          $(this).children('ul').slideToggle();
          return false;
        }
      });
    });
  </script>
</body>
</html>

示例二

请看下面的代码,效果图请看右侧:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>示例二:级联菜单自动展开</title>
  <style>
    /* 清除默认样式 */
    *{
      margin: 0;
      padding: 0;
    }
    /* 一级菜单样式 */
    .menu ul>li>a{
      display: block;
      padding: 5px 10px;
      text-decoration: none;
      background-color: #e1e1e1;
      border-bottom: 1px solid #dee1e3;
    }
    /* 二级菜单样式 */
    .menu ul>li>ul>li>a{
      display: block;
      padding: 5px 20px;
      text-decoration: none;
      background-color: #f7f7f7;
    }

    /* 三级菜单样式 */
    .menu ul>li>ul>li>ul>li>a{
      display: block;
      padding: 5px 30px;
      text-decoration: none;
      background-color: #fff;
    }
  </style>
</head>
<body>
  <div class="menu">
    <ul>
      <li><a href="#">一级菜单1</a></li>
      <li>
        <a href="#">一级菜单2</a>
        <ul>
          <li><a href="#">二级菜单1</a></li>
          <li><a href="#">二级菜单2</a></li>
          <li>
            <a href="#">二级菜单3</a>
            <ul>
              <li><a href="#">三级菜单1</a></li>
              <li><a href="#">三级菜单2</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">一级菜单3</a>
        <ul>
          <li><a href="#">二级菜单4</a></li>
          <li><a href="#">二级菜单5</a></li>
        </ul>
      </li>
    </ul>
  </div>
  <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
  <script>
    $(function(){
      // 第一个菜单自动展开
      $('.menu ul li:first-child ul').slideDown();

      // 点击一级菜单
      $('.menu ul li').click(function(){
        // 如果当前菜单下有子菜单,则展开
        if($(this).children('ul').length>0){
          // 隐藏其他的子菜单
          $('.menu ul ul').not($(this).children('ul')).hide();
          // 展开或收起子菜单
          $(this).children('ul').slideToggle();
          return false;
        }
      });
    });
  </script>
</body>
</html>

以上就是本次可收缩展开的级联菜单实例代码的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现可收缩展开的级联菜单实例代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 解析jQueryEasyUI的使用

    解析 jQuery EasyUI 的使用 什么是 jQuery EasyUI jQuery EasyUI 是基于 jQuery 的一款 UI 组件库,它能够让开发者快速实现各种常用的 Web 界面组件,包括但不限于菜单、对话框、表格等等。 安装和使用 安装 要使用 jQuery EasyUI,首先需要将其下载并放置在该项目的目录中。可以在其官网(http:/…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTreeGrid clearFilters()方法

    以下是关于 jQWidgets jqxTreeGrid 的 clearFilters() 方法的完整攻略: jQWidgets jqxTreeGrid clearFilters() 方法 clearFilters() 方法用于清除 jqxTreeGrid 组件中的所有筛选器。该方法会将所有列筛选器条件清空,并重新加载数据源。 语法 $(‘#jqxTreeGr…

    jquery 2023年5月11日
    00
  • jQuery post数据至ashx实例详解

    下面就为您详细讲解“jQuery post数据至ashx实例详解”的完整攻略。 1. 什么是jQuery post方法 jQuery.post()方法是jQuery中的Ajax快捷方式,用于向服务器发送POST请求。POST请求可以通过HTTP主体发送数据,而GET请求则通过URL参数发送数据。jQuery.post()方法允许您指定要发送的数据,并发生在该…

    jquery 2023年5月28日
    00
  • jQWidgets jqxListBox enableHover属性

    jqxListBox 是 jQWidgets 提供的一种列表框控件,用于在 Web 应用程序中创建列表。enableHover 属性用于启用或禁用 jqxListBox件中的鼠标悬停效果。以下是 jqxListBox 的 enableHover 属性的详细说明: enableHover 属性 enableHover用于启用或禁用 jqxListBox 控件中…

    jquery 2023年5月10日
    00
  • jQWidgets jqxKanban高度属性

    jQWidgets jqxKanban 高度属性详解 jQWidgets jqxKanban 是一种看板控件,用于在 Web 应用程序中创建看板。height 属性是 jqxKanban 控件的一个属性,用于设置看板的高度。本文将详细讲解 height 属性的使用方法,并提供两个示例说明。 属性 height 用于设置看板的高度。该属性接受一个数字或字符串作…

    jquery 2023年5月10日
    00
  • jQuery实现contains方法不区分大小写的方法

    要实现jQuery的contains方法不区分大小写,可以通过jQuery.expr[“:”].icontains来实现。下面是步骤: 1.编写jQuery.expr[“:”].icontains的自定义方法 首先,我们需要编写一个jQuery的表达式,用来对DOM结点进行匹配,这里我们可以定义一个新的方法icontains,该方法可以实现忽略大小写的匹配。…

    jquery 2023年5月28日
    00
  • jQWidgets jqxExpander collapsed事件

    jQWidgets jqxExpander collapsed事件 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包括表格下拉等。jqxExpander是jQWidgets的组件之一,用于创建可折叠的面板。collapsed事件是jqxExpander的一个事件,用于在面板折叠时触发。 collapsed事件的基本语法 col…

    jquery 2023年5月9日
    00
  • jquery UI 1.72 之datepicker

    下面是关于jquery UI 1.72之datepicker的完整攻略: 介绍 jquery UI 1.72是一款基于jquery的UI组件库,其中包含了丰富的UI组件,包括日期选择器(datepicker)。datepicker组件可以方便地让用户选择日期,支持各种格式和语言,也可自定义样式。接下来,我们来详细了解如何使用datepicker。 安装 使用…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部