jQuery简单实现手风琴侧边菜单

先看页面代码,列表的嵌套:

<div id="menuDiv">
  <ul id="menu">
    <li class="parentLi">
      <span>B</span>
      <ul class="childrenUl">
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
      </ul>
    </li>
    <li class="parentLi">
      <span>B</span>
      <ul class="childrenUl">
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
      </ul>
    </li>
    <li class="parentLi">
      <span>B</span>
      <ul class="childrenUl">
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
        <li class="childrenLi"><span>C</span></li>
      </ul>
    </li>
  </ul>
</div>

 css 代码,主要设置背景色和子菜单左边框的样式,设置悬浮和选中的样式,开始设置子菜单不显示(通过 js 设置点击之后再显示):

 

#menuDiv{
    width: 200px;
    background-color: #029FD4;
}
.parentLi
{
    width: 100%;
    line-height: 40px;
    margin-top: 1px;
    background: #1C73BA;
    color: #fff;
    cursor: pointer;
    font-weight:bolder;
}
.parentLi span
{
    padding: 10px;
}
.parentLi:hover, .selectedParentMenu
{
    background: #0033CC;
}
.childrenUl
{
    background-color: #ffffff;
    display: none;
}
.childrenLi
{
    width: 100%;
    line-height: 30px;
    font-size: .9em;
    margin-top: 1px;
    background: #63B8FF;
    color: #000000;
    padding-left: 15px;
    cursor: pointer;
}
.childrenLi:hover, .selectedChildrenMenu
{
    border-left: 5px #0033CC solid;
    background: #0099CC;
    padding-left: 15px;
}

  接下来就是点击事件的代码:

$(".parentLi").click(function(event) {
        $(this).children(‘.childrenUl‘).slideToggle();
    });

    $(".childrenLi").click(function(event) {
        event.stopPropagation();
        $(".childrenLi").removeClass(‘selectedChildrenMenu‘);
        $(".parentLi").removeClass(‘selectedParentMenu‘);
        $(this).parents(".parentLi").addClass(‘selectedParentMenu‘);
        $(this).addClass(‘selectedChildrenMenu‘);
    });

 

 需要注意的是列表嵌套,会导致事件冒泡,所以在子菜单的点击事件里面要组织冒泡,event.stopPropagation();

时间: 2024-12-18 13:03:19

jQuery简单实现手风琴侧边菜单的相关文章

jQuery 手风琴侧边菜单

动手做了一个简单手风琴菜单,上图: 点击 B 可收缩 C 列表,点击 C 改变自身和父节点 B 的样式,悬浮时均有不同的样式改变. 先看页面代码,列表的嵌套: <div id="menuDiv"> <ul id="menu"> <li class="parentLi"> <span>B</span> <ul class="childrenUl"> <

jQuery 简单漂亮的导航菜单

鼠标悬浮时菜单项向上移动成蓝底白字,点击之后底部会有蓝条表示当前选中项. 页面代码,菜单的每一项都是一个 div ,其中包括一个 ul 用来放置显示文字等,另一个 div 则是底部的蓝条,需要给第一项和最后一项设置不同的 class ,样式需要用到: <div id="nav"> <div class="navItem indexNavItem"> <ul class="navUl"> <li>首页

基于jQuery制作的手风琴折叠菜单

初始化为全部隐藏 点第一个,显示第一个所隐藏的内容 当点第二个的时候,第一个的内容隐藏,第二个栏目的内容显示,以此类推 下面是代码部分 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } body {

jQuery&amp;HTML&amp;CSS3实现垂直手风琴折叠菜单方法讲解

在网页制作中我们常常需要折叠式的菜单,在折叠菜单中,手风琴特效的菜单是非常受欢迎,下面就讲解使用jQuery+HTML+CSS3实现垂直手风琴折叠菜单的方法. jQuery实现垂直手风琴折叠菜单示例代码 首先给出手风琴折叠菜单的HTML代码,如下所示: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CSS3垂直手风琴折叠菜单DEMO演示</titl

JQuery -&gt; 超级简单的下拉菜单

1. create a new accout, create orginazation, create repo 2. install git in your local pc Note: you can create ssh key to avoid username/password input for github operation https://help.github.com/articles/generating-ssh-keys https://help.github.com/a

JQuery -&amp;gt; 超级简单的下拉菜单

使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 鼠标悬浮效果 代码 <!DOCTYPE html> <html> <head> <script type=&quo

在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据

在AJAX里 使用JSON返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &l

jquery实现的三级导航菜单实例代码

jquery实现的三级导航菜单实例代码:使用最多的可能是二级导航菜单,所以网上的代码一大堆,三级菜单的代码也很多,不过相对较少一些,本章节通过一个代码实例详细介绍一下三级导航菜单的实现过程,代码如下: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta nam

vue仿美团侧边菜单组件

 这样一个组件的话我们是经常都能看到的,也经常都会用到,日常积累 首先从我们的布局开始,布局当然是越简单越好.我们是可以看到左边一个列表,固定不变的,右边是一个弹出菜单,菜单根据左边的每一栏获得不同的值,展示不同的内容,当然我这个gif图做得比较垃圾.大概明白这个意思就好 那么我看看这个布局怎么做 <template> <div class="m-menu"> <dl class="nav" @mouseleave='mouseleav