jQuery做二级菜单动画
来源:互联网 发布:周易取名 知乎 编辑:程序博客网 时间:2024/04/30 11:50
鼠标悬浮动态展出二级菜单在网页中非常常见,这里介绍如何用jQuery制作这种效果。相关的知识有:
mouseover()
mouseout
mouseenter()
mouseleave()
hover()
show()
hide()
有JS基础的同学,遇到这个问题的时候,很容易就想到mouseover()
mouseout
这两个事件。我最开始做这个题目用的也是这两个事件。jquery代码如下:
<script> $(function(){ $(".nav > li").mouseover(function(event){ $(this).children().show(); }); $(".nav > li").mouseout(function(){ var a = $(this).index(); $(".mune").hide(); }); }) </script>
这样写,鼠标悬浮时,确实可以得到对应的结果。但是我们想要的是动态展出的结果。所以show()
和hide()
括号里还要填上时间。例如0.5s,所以应该是show(500)
和hide(500)
,这个时候,问题就出现了,我们发现,当我们鼠标悬浮在二级菜单的时候,二级菜单重复展出多次,最后才消失。
我们想要的效果应该是,鼠标悬浮对应的菜单,对应二级菜单展出。此时鼠标悬浮在二级菜单,二级菜单不应该消失。只有鼠标离开菜单和二级菜单,二级菜单才消失。下面给出两种处理办法:
1.用mouseenter()
mouseleave()
:
问题的原因很容易想到,因为在DOM里面二级菜单是一级菜单的子元素,所以鼠标悬浮在二级菜单同样可以触发一级菜单的事件(事件冒泡)。
我再翻看手册,发现了mouseenter()
mouseleave()
,他们也是是鼠标悬浮和离开事件。区别是:用mouseenter()
mouseleave()
时,子级的事件不会传递到父级。所以上面的问题就变的容易。只要将mouseover()
mouseout
切换为mouseenter()
mouseleave()
即可。
代码如下:
<script> $(function(){ $(".nav > li").mouseenter(function(event){ $(this).children().show(500); }); $(".nav > li").mouseleave(function(){ var a = $(this).index(); $(".mune").hide(500); }); }) </script>
2.用hover()
其实hover()和上面的办法原理是一样的,我们查看它的语法是
hover(enter,leave)
,所以hover()
就是mouseenter()
mouseleave()
综合。专门处理类似的问题,所以上面的代码可以更简洁些:
$(function(){ $(".nav > li").hover(function () { $(this).children().show(500); }, function () { $(".mune").hide(500); }) })
完整代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>二级菜单</title> <style> *{ margin: 0; padding: 0; } li{ list-style-type: none; } ul.nav{ width: 400px; height: 40px; line-height: 40px; margin: 50px auto; background: #bbb; } ul.nav li{ float: left; height: 40px; padding: 0 15px; position: relative; } ul.mune { width: 100px; position: absolute; background: #ccc; left: 0; top: 40px; display: none; } </style> <script src="jquery-1.11.1.min.js"></script></head><body> <ul class="nav"> <li>水果 <ul class="mune"> <li>苹果</li> <li>雪梨</li> <li>荔枝</li> </ul> </li> <li>体育 <ul class="mune"> <li>跑步</li> <li>篮球</li> <li>足球</li> </ul> </li> <li>游戏 <ul class="mune"> <li>王者荣耀</li> <li>魔兽</li> <li>超级玛丽</li> </ul> </li> </ul> <script> $(function(){ // $(".nav > li").mouseenter(function(event){ // $(this).children().show(500); // }); // $(".nav > li").mouseleave(function(){ // var a = $(this).index(); // // $(".mune").mouseout(function(){ // $(".mune").hide(500); // // }) // }); $(".nav > li").hover(function () { $(this).children().show(500); }, function () { $(".mune").hide(500); }) }) </script></body></html>
- jQuery做二级菜单动画
- JQuery做折叠二级菜单
- jquery 二级菜单带动画效果
- jquery二级菜单动画效果的实现代码
- jQuery二级下拉菜单 下拉箭头翻转动画
- Jquery二级菜单
- jquery二级树形菜单
- jquery弹出二级菜单
- jQuery二级菜单
- jquery实现二级菜单
- Android 二级动画弹出菜单
- JQuery 实现二级下拉菜单
- jquery+div+css二级菜单
- 用jquery生成二级菜单
- jquery 简单二级树形菜单
- jQuery左侧二级菜单树
- jquery ajax二级联动菜单
- Jquery二级菜单的显示
- Gym
- mod_wsgi.so+django+python部署了几天。。惭愧惭愧
- Resnet_50网络结构详解
- Q97:怎么用三角形网格细分Bezier曲面——以Utah Teapot为例
- VS中 fatal error LNK1123: 转换到 COFF 期间失败 的解决方法
- jQuery做二级菜单动画
- 设计模式(二)观察者模式
- poj2699枚举+网络流
- leetcode136. Single Number
- document.documentElement.与document.body区别
- 【Spring学习18】bean作用域:Web作用域及配置
- linux初学 unit7
- POJ 1065-Wooden Sticks [dp+Dilworth定理] 《挑战程序设计竞赛》2.3
- 笔记