Jquery控制点击时一、二级菜单自由隐藏与出现
一、基本HTML和CSS
HTML中产生一、二级导航的代码:
{loop $nav $key $value}
<div class=”u_con”>
<span class=” xg_bt active ”>$value[0]</span>
<ul class=”u_con_list”>
{loop $sub_nav_list[$key] $k $v}
<li class=”u_con_item”>
<a href =”index.php?&view={$key}”>$v[0]</a>
</li>
{/loop}
</ul>
</div>
{/loop}
关键CSS代码:
.xg_bt{
display:block;
background:url(lis_03.png) no-repeat 70px 4px;
font-size:12px;color:#666;
font-weight:bold;
padding-left:14px;
margin-bottom:6px;
cursor:pointer;
}
.active{
background:url(lis_01.png) no-repeat 70px 4px;
}
display
:
none
;
padding-bottom
:
12px
;
width
:
100%
;
其中:.xg_bt和.active的css样式添加在了所有的一级菜单上面,由于.active样式写在.xg_bt样式之后,它的background属性会覆盖掉.xg_bt中的background属性,其中:lis_01.png是箭头向右的图片,lis_03是箭头向左的图片。.u_con_list中的样式:display:none;是控制初始化的时候,ul列表是默认隐藏的,初始化的时候是这样显示的:
2. Jquery代码解析:
$(document).ready(function(){
$(".u_con .xg_bt").click(function(){
$(this).toggleClass("active");
$(this).next().toggle();
var index = $(".u_con .xg_bt").index(this);
$(".u_con .xg_bt").each(function(i){
if(i != index){
if($(this).next().css("display")=="block"){
$(this).next().css("display","none");
}
}
});
});
})
$(".u_con .xg_bt").click();这个是选中了所有的一级菜单,让它们监听click事件;
$(this).toggleClass("active");
其中:toggleClass在Jquery手册上是这样描述的:如果存在(不存在)就删除(添加)一个类。也就是控制当我们点击一下一级标题,这个.active类就消失,那个被它覆盖的.xg_bt中的background属性就是发生作用,箭头就会向下。
$(this).next().toggle();
其中:next()在Jquery手册上是这样描述的:取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。这个函数只返回后面那个紧邻的同辈元素,而不是后面所有的同辈元素(可以使用nextAll)。 由于$(this)是取得的span这个标签,它的next()就是ul这个标签了。
其中:toggle()在Jquery手册上是这样描述的:切换元素的可见状态;如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。 这也就是控制我们ul的显示,初始化的时候ul的display默认是none,当点击之后就会变成block,从而显示出来。到这一步的效果会是下面这样的:
如果这里到这一步就算了的话,总体实现的效果就是,初始化默认不展开,当点击某个一级标题之后,二级标题列表出现,而且箭头有向右变为向下,当再次点击另一个的时候,另一个也显示出来,但是上一次显示的那个仍然显示,无法隐藏,下面我们要做的就是当点击另一个的时候,将当前已经显示的隐藏掉再显示出当前点击的那个一级标题下的二级标题列表:
var index = $(".u_con .xg_bt").index(this);
其中:index()在Jquery手册中的描述是:搜索匹配的元素,并返回相应元素的索引值,从0开始计数。如果参数是一组DOM元素或者jQuery对象,那么返回值就是传递的元素相对于原先集合的位置。 这里我们的目的是要取得我们点击的那个一级标题的索引index。
$(".u_con .xg_bt").each(function(i){});
其中:each()在Jquery手册中的描述是:以每一个匹配的元素作为上下文来执行一个函数。 这个其实也就是相当于一个循环,当我点击一个一级标题的时候,将一级标题列表循环,检查它下面的ul的display的属性,如果是block显示的,就将它隐藏,只显示我当前点击的一级标题下的二级标题列表,这样就实现了我们需要的那个效果。
$(this).next().css("display") == "block"; $(this).next().css("display","none");
其中:css()在Jquery手册中的描述是:css(name):访问第一个匹配元素的样式属性;css(name,value):在所有匹配的元素中,设置一个样式属性的值。
到这里我们的效果就实现了:
现在来苏州了,也要坚持每天的学习,加油!!
Jquery控制点击时一、二级菜单自由隐藏与出现的更多相关文章
- jquery垂直展开折叠手风琴二级菜单
摘要:jquery实现垂直展开二级菜单 最近新开发一个简单项目,用到左侧两级的菜单.找找了手头的文件,竟然没有现成的代码,算了,去网上找找整理下吧. 注:jquery-1.8.3.min.js需要下载 ...
- CSS制作二级菜单时,二级菜单与一级菜单不对齐
效果如图: 部分代码如图: <li><a href="#" target="_blank">关于我们</a> <ul& ...
- jquery导航栏高亮(二级菜单点击一级保持高亮)
<script type="text/javascript"> var urlstr = location.href; var urlstatus=false; $(& ...
- “Bootstrap做的响应式菜单在iPhone上点击不了二级菜单“的解决办法!
只需把把点击的a(被点击的)变成button即可.
- Jquery垂直下拉二级菜单
自己做了一个基于Jquery 的垂直下拉二级菜单功能,直接看图: Html的代码如下: <!DOCTYPE html> <html> <head> <meta ...
- Selenium操作示例——鼠标悬停显示二级菜单,再点击二级菜单或下拉列表
这两天在玩python中selenium,遇到一个问题,就是鼠标移动到页面中某按钮或菜单,自动弹出二级菜单或下拉菜单,再自动点击其中的二级菜单或下拉列表. 首先,手工操作:打开母校的主页 http:/ ...
- 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
(前端用重点整理博客地址)链接地址:http://www.cnblogs.com/atree/archive/2011/06/30/jQuery-smartMenu-javascript.html 一 ...
- 做二级菜单时候遇到的关于事件冒泡以及mouseover和mouseenter的不同
二级菜单作为最普通小组件,我遇到了坑. <style> .wrapper { height: 150px; border: 1px solid; width: 150px; } .wrap ...
- jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类
jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类 本例有另外2个关联案例,演示地址分别为2.php,3.php 演示 XML/HTML Code <div class="ar ...
随机推荐
- ShellExecute函数简单说明
平时在delphi写代码的过程中总是能遇到ShellExecute函数,于是索性将它的使用方法整理一下,由于我在微软的站点上也没能查到个详解(当然我查的中文版,俺菜嘛) ShellExecute函数原 ...
- Linux 下 简单客户端服务器通讯模型(TCP)
原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...
- Android基础笔记(十)- 帧动画、补间动画具体解释、对话框
帧动画 补间动画Tween Animation 对话框以及面试中的注意点 帧动画 帧动画非常easy,我们首先看一下Google官方解释This is a traditional animation ...
- SQL点滴24—监测表的变化
原文:SQL点滴24-监测表的变化(转载) 在网上看到一篇关于监测表中的插入,更新,删除的方法,使用触发器实现的,很有价值. 地址:http://www.dbaunion.com/u/livecoac ...
- 【硬件】DELLserver硬件监控和DELL系统管理工具OMSA介绍
1.1.1. DELLserver硬件监控和DELL系统管理工具OMSA介绍 本文介绍了利用使用Nagios和OMSA显示器DELLserver硬件健康状况,Nagios监控的方式是NRPE模式,须要 ...
- SQLServer通过链接服务器远程删除数据性能问题解决
原文:SQLServer通过链接服务器远程删除数据性能问题解决 在上一遍文章中介绍了SQLServer通过链接服务器访问Oracle性能问题的解决方法,本文介绍链接服务器下远程删除SQLServer数 ...
- LINUX SCP 远程 文件 复制
首先,以确保直接两个机器IP可以在每个ping通过 然后使用SCP命令从第一台主机向第二台主机复制文件 scp src chiwei@192.168.8.144:/home/chiwei/mydisk ...
- iOS UIWebView键盘操控
+-------------------------+ 假设你有以下的问题,也许这篇文章将帮助你. 键盘遮盖了UIWebView. 怎样拖动UIWebView来移除键盘. 键盘出现时UIWebView ...
- C# 语言的多线程编程,完全是本科OS里的知识
基本知识,无参数Thread和带参数的Thread Thread类的参数就是参数指针,可以传入一个无参的函数. 如果要传入带参数的函数,先new一个ParameterizedThreadStart委托 ...
- 运行jar包
windos下,打开dos命令cmd然后cd 你的路径(比如E:/新建文件夹) linux下,打开终端cd 到你的路径( 然后输入java -jar 要运行的jar.jar