分享我的jquery實現(xiàn)下拉菜單心的
摘要:
jquery庫給我們帶來了很多方便的地方,使用jquery實現(xiàn)一個簡單的下拉菜單已經(jīng)是很簡單了,但也有不同的實現(xiàn)方法。今天自己使用jquery寫了一個下拉菜單,參考了Xiaofeng Wang的SexyDropDownMenu2010,其中還是有一些東西感覺值得記錄一下。
實現(xiàn):
首先上他的代碼(把全部的代碼貼上來太長了,就撿部分吧),
一、html中ul列表
<ul class="topmenu">
<li><a href="#">Home</a></li>
<li><a href="#">Tutorials</a>
<ul class="submenu1">
<li><a href="#">Ch1</a></li>
<li><a href="#">Ch2</a>
<ul class="submenu11">
<li><a href="#">Ch21</a>
<ul class="submenu11">
<li><a href="#">Ch211</a>
<ul class="submenu11">
<li><a href="#">Ch2111</a>
<ul class="submenu11">
<li><a href="#">Ch21111</a></li>
<li><a href="#">Ch21112</a></li>
<li><a href="#">Ch21113</a></li>
<li><a href="#">Ch21114</a></li>
<li><a href="#">Ch21115</a></li>
<li><a href="#">Ch21116</a></li>
</ul>
</li>
<li><a href="#">Ch2112</a></li>
<li><a href="#">Ch2113</a></li>
<li><a href="#">Ch2114</a></li>
<li><a href="#">Ch2115</a></li>
</ul>
</li>
<li><a href="#">Ch212</a></li>
<li><a href="#">Ch213</a></li>
<li><a href="#">Ch214</a></li>
</ul>
</li>
<li><a href="#">Ch22</a>
<ul class="submenu11">
<li><a href="#">Ch221</a></li>
<li><a href="#">Ch222</a></li>
<li><a href="#">Ch223</a></li>
</ul>
</li>
<li><a href="#">Ch23</a></li>
</ul>
</li>
<li><a href="#">Ch3</a>
<ul class="submenu11">
<li><a href="#">Ch31</a></li>
<li><a href="#">Ch32</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Resources</a>
<ul class="submenu1">
<li><a href="#">Sub Nav Link</a></li>
<li><a href="#">Sub Nav Link</a></li>
</ul>
</li>
<li><a href="#">About Us</a></li>
<li><a href="#">Advertise</a></li>
<li><a href="#">Submit</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
其中為六層深度的菜單結構,如下圖

二、js部分(css就不貼出來了)
$(document).ready(function() {
//第一部分
// Top Menu
//Only shows drop down trigger when js is enabled (Adds empty span tag after ul.submenu1*)
$("ul.submenu1").parent().append("<span></span>");
//第二部分
$("ul.topmenu li span").click(function() { //When trigger is clicked...
//Following events are applied to the submenu1 itself (moving submenu1 up and down)
//Drop down the submenu1 on click
$(this).parent().find("ul.submenu1").slideDown('fast').show();
//在click后給綁定hover處理函數(shù),感覺是比較巧妙的地方
$(this).parent().hover(function() {
}, function() {
//When the mouse hovers out of the submenu1, move it back up
$(this).parent().find("ul.submenu1").slideUp('slow');
});
//Following events are applied to the trigger (Hover events for the trigger)
}).hover(function() {
//On hover over, add class "hover"
$(this).addClass("hover");
}, function() { //On Hover Out
//On hover out, remove class "hover"
$(this).removeClass("hover");
});
//第三部分
$("ul.topmenu li ul.submenu1 li").hover(function() {
$(this).find("ul.submenu11:first").show("slow");
}, function() {
$(this).find("ul.submenu11:first").hide("fast");
});
});
第一部分:
添加了下了菜單的一個觸發(fā)按鈕
第二部分:
綁定了一個click事件的處理函數(shù)
觸發(fā)按鈕被click后給下拉菜單最外層的li綁定hover處理函數(shù),感覺是比較巧妙的地方。
給最外層的li綁定hover函數(shù),這里處理函數(shù)寫的是當鼠標懸停在li上時不做任何處理(第一函數(shù)為空),當鼠標離開時li收起。
這樣一來,后面展開ul的菜單都是最外層的li里面,這樣菜單就不會自動收起了,也就是等于是鼠標離開了整個菜單,li會自動收起。
第三部分:
給菜單下中嵌套的ul的hover事件綁定函數(shù),用于展開和收起下一級菜單
$(this).find("ul.submenu11:first")也是比較巧妙的通過find獲得當前匹配元素集合中每個元素的后代,并通過“ul.submenu11:first”篩選活動下一代元素給以展開。
同時也給下一級菜單綁定了收起的處理函數(shù),與觸發(fā)菜單中click給最外層li綁定的收起函數(shù)一同作用,是想菜單的自動收起功能。
總結:
其中展現(xiàn)了jquery篩選器的強大和靈活,也體現(xiàn)jquery優(yōu)美的鏈式語法。
下面給大家分享一段純jQuery水平下拉菜單實現(xiàn)
<!DOCTYPE html>
<html>
<head>
<title>jQuery水平下拉菜單實現(xiàn)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" charset="UTF-8" >
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="bootstrap/js/jquery-1.11.1.min.js"></script>
<!--[if lt IE 9]>
<script src="bootstrap/js/html5shiv.js"></script>
<script src="bootstrap/js/respond.min.js"></script>
<![endif]-->
<style type="text/css">
.menus{border:1px solid red; float:left; margin-left:4px; background:red;}
.menus a{display:block; width:100px; text-align:center;}
.menu{display:none;}
a{cursor:pointer;text-decoration:none;}
a:hover{background:white; text-decoration:none;}
a:visited{text-decoration:none; color:black;}
</style>
<script>
$(function(){
$(".menu-title").click(function(){
$(this).next().toggleClass();
});
});
</script>
</head>
<body>
<div class="menus">
<a class="menu-title">菜單項</a>
<div class="menu">
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
</div>
</div>
<div class="menus">
<a class="menu-title">菜單項</a>
<div class="menu">
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
</div>
</div>
<div class="menus">
<a class="menu-title">菜單項</a>
<div class="menu">
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
</div>
</div>
<div class="menus">
<a class="menu-title">菜單項</a>
<div class="menu">
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
<a href="#" class="menu-item">菜單列表</a>
</div>
</div>
</body>
</html>
- jQuery+CSS 實現(xiàn)的超Sexy下拉菜單
- jquery 多級下拉菜單核心代碼
- 用jquery實現(xiàn)下拉菜單效果的代碼
- 來自國外的30個基于jquery的Web下拉菜單
- jquery仿京東導航/仿淘寶商城左側分類導航下拉菜單效果
- Jquery帶搜索框的下拉菜單
- jQuery點擊彈出下拉菜單的小例子
- JQuery實現(xiàn)絢麗的橫向下拉菜單
- 巧用jquery解決下拉菜單被Div遮擋的相關問題
- jquery實現(xiàn)下拉菜單的二級聯(lián)動利用json對象從DB取值顯示聯(lián)動
- 用jquery實現(xiàn)的一個超級簡單的下拉菜單
- JQuery設置獲取下拉菜單某個選項的值(比較全)
- jQuery實現(xiàn)向下滑出的平滑下拉菜單效果
- jquery實現(xiàn)很酷的網(wǎng)頁頂部圖標下拉菜單效果
- jquery實現(xiàn)鼠標滑過顯示二級下拉菜單效果
- jquery實現(xiàn)鼠標經(jīng)過顯示下劃線的漸變下拉菜單效果代碼
- jquery實現(xiàn)的淡入淡出下拉菜單效果
相關文章
jquery 設置元素相對于另一個元素的top值(實例代碼)
在jquery中offset().top是相對于body來說的,另外在設置top值的時候要找到與該元素最近的有相對值的元素2013-11-11
jquery 操作兩個select實現(xiàn)值之間的互相傳遞
本篇文章主要是對jquery操作兩個select實現(xiàn)值之間的互相傳遞進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03
jquery無法設置checkbox選中即沒有變成選中狀態(tài)
設置以后checkbox并沒有變成選中狀態(tài),用chrome調試看了一下,checkbox中確實有checked屬性,針對這個問題,大家可以參考下本文2014-03-03
詳解Bootstrap的iCheck插件checkbox和radio
這篇文章主要詳細介紹了Bootstrap的iCheck插件checkbox和radio的知識及bootstrap icheck獲取radio的value值的方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧2016-08-08
jQuery常用事件方法mouseenter+mouseleave+hover
這篇文章主要介紹了jQuery常用事件方法mouseenter、mouseleave和hover方法,下文內容介紹詳細,需要的小伙伴可以參考一下2022-03-03

