jQuery实现下拉菜单
<!--@description-->
<!--@author beyondx-->
<!--@date Created in 2022/08/01/ 10:18-->
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>jQuery下拉菜单</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
.wrap {
width: 330px;
height: 30px;
margin: 100px auto 0;
padding-left: 10px;
background-image: url(images/bg.jpg);
}
.wrap li{
background-image: url(images/libg.jpg);
}
.wrap > ul > li {
float: left;
margin-right: 10px;
position: relative;
}
.wrap a {
display: block;
height: 30px;
width: 100px;
text-decoration: none;
color: #000;
line-height: 30px;
text-align: center;
}
.wrap li ul {
position: absolute;
top: 30px;
display: none;
}
</style>
</head>
<body>
<div class="wrap">
<ul>
<li>
<a href="javascript:void(0);">一级菜单1</a>
<ul>
<li><a href="javascript:void(0);">二级菜单1</a></li>
<li><a href="javascript:void(0);">二级菜单2</a></li>
<li><a href="javascript:void(0);">二级菜单3</a></li>
</ul>
</li>
<li>
<a href="javascript:void(0);">一级菜单1</a>
<ul>
<li><a href="javascript:void(0);">二级菜单1</a></li>
<li><a href="javascript:void(0);">二级菜单2</a></li>
<li><a href="javascript:void(0);">二级菜单3</a></li>
</ul>
</li>
<li>
<a href="javascript:void(0);">一级菜单1</a>
<ul>
<li><a href="javascript:void(0);">二级菜单1</a></li>
<li><a href="javascript:void(0);">二级菜单2</a></li>
<li><a href="javascript:void(0);">二级菜单3</a></li>
</ul>
</li>
</ul>
</div>
</body>
<script src="jquery-1.12.4.js"></script>
<script>
$(function () {
//需求: 给一级菜单li设置鼠标移入事件,二级菜单显示。
// 给一级菜单li设置鼠标离开事件,二级菜单隐藏。
//1.给一级菜单li设置鼠标移入事件,二级菜单显示。
// 获取一次菜单li 的方式
$('.wrap > ul > li').mouseover(function () {
// $('.wrap > ul > li > ul').css('display', 'block');
// console.log(this); // 谁触发了 鼠标移入事件, 那这个 this 还是一个 dom对象
// 如果希望这个 dom对象, 调用 jquery方法, 那需要 $(this), 将 dom对象 -> jquery对象
// 只获取 ul 这个元素
// $(this).children('ul').css('display', 'block'); // 显示就是修改 display属性为block
$(this).children('ul').show(); // show()方法本质还是更新 display属性为block
});
//2.给一级菜单li设置鼠标离开事件,二级菜单隐藏。
$('.wrap > ul > li').mouseout(function () {
$(this).children('ul').hide(); // hide()本质上, 还是更新 display属性为 none
});
//3.思考题:
//为什么不给一级菜单a标签设置鼠标移入和离开事件?
//因为这样的话,选不到二级菜单.
// 首先找到a
// console.log($('.wrap > ul > li > a'));
// 鼠标移入, 显示
// $('.wrap > ul > li > a').mouseover(function () {
// // console.log(this); // output: <a href="javascript:void(0);">一级菜单1</a> 这说明 this是 dom对象
// // console.log($(this)); // output: jQuery.fn.init [a, context: a] 这说明 $(this) 是 jquery对象
// // 找 a 的 下一个兄弟 ul
// // console.log($(this).siblings('ul')); // output: jQuery.fn.init [ul, prevObject: jQuery.fn.init(1), context: a]
// $(this).siblings('ul').show();
// });
//
// // 鼠标移出, 隐藏
// $('.wrap > ul > li > a').mouseout(function () {
// $(this).siblings('ul').hide();
// });
});
</script>
</html>
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南