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日

相关文章

  • jQuery resize()方法

    jQuery resize()方法用于在窗口或元素大小调整时触发事件。它可以用于检测浏览器窗口大小的变化,以便在需要时重新布局页面元素。 以下是resize()方法的详细: 语法 $(window).resize(function) 或 $(selector).resize(function) 参数 function:必需,当窗口或元素大小调整时要执行的函数…

    jquery 2023年5月9日
    00
  • jQuery之ajax删除详解

    首先我们需要明确一下,所谓的“jQuery之ajax删除详解”,是针对使用jQuery实现使用ajax技术进行删除操作的教程。下面将分别介绍以下内容: ajax技术的原理 jQuery中的ajax方法及其基本用法 使用ajax技术进行删除操作的具体步骤 示例演示 ajax技术的原理 ajax(Asynchronous JavaScript and XML)是…

    jquery 2023年5月27日
    00
  • jQuery获得document和window对象宽度和高度的方法

    想要使用jQuery获得document或window对象的宽度和高度,需要使用以下方法: $(window).width():获取视口宽度 $(window).height():获取视口高度 $(document).width():获取文档宽度 $(document).height():获取文档高度 注:文档高度要注意如果文档内容没有超过视口高度,它的返回…

    jquery 2023年5月28日
    00
  • jQWidgets jqxNotification closeOnClick属性

    以下是关于 jQWidgets jqxNotification 组件中 closeOnClick 属性的详细攻略。 jQWidgets jqxNotification closeOnClick 属性 jQWidgets jqxNotification 的 closeOnClick 属性用于指定是否在单击通知组件时关闭它。 语法 // 获取 closeOnCl…

    jquery 2023年5月12日
    00
  • 如何使用jQuery Mobile创建一个基本的弹出按钮

    使用jQuery Mobile创建一个基本的弹出按钮可以通过以下步骤完成: 步骤一:引入必要的代码文件 首先需要从jQuery Mobile官方网站下载压缩包,并引入必要的代码文件。推荐使用CDN的方式,这有利于提高网站的速度和性能。 在HTML文件头部引入如下代码: <!– 引入 jQuery 核心文件 –> <script src=…

    jquery 2023年5月12日
    00
  • jQWidgets jqxHeatMap paletteSettings属性

    jQWidgets jqxHeatMap paletteSettings属性 jQWidgets jqxHeatMap 是一种热力图控件,用于在 Web 应用程序中创建热力图。paletteSettings 属性是 jqxHeatMap 控件的一个属性,用于设置热力图的颜色映射。本文将详细讲解 paletteSettings 的使用方法,并提供两个示例。 属…

    jquery 2023年5月10日
    00
  • jQWidgets jqxDataTable pageSizeOptions 属性

    以下是关于“jQWidgets jqxDataTable pageSizeOptions 属性”的完整攻略,包含两个示例说明: 简介 jqxDataTable 控件的 pageSizeOptions 属性用于设置控件分页大小的可选项。 整攻 以下是 jqxDataTable 控件 pageSizeOptions 属性的完整攻略: 定义 pageSizeOpt…

    jquery 2023年5月11日
    00
  • jQWidgets jqxNavBar rtl属性

    以下是关于 jQWidgets jqxNavBar 组件中 rtl 属性的详细攻略。 jQWidgets jqxNavBar rtl 属性 jQWidgets jqxNavBar 组件的 rtl 属性用于设置导航栏的文本方向是否为从右到左。该可以是布尔值,可选值为 true 或 false。 语法 $(‘#navbar’).jqxNavBar({ rtl: …

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