jquery 無(wú)限級(jí)下拉菜單的簡(jiǎn)單實(shí)現(xiàn)代碼
更新時(shí)間:2014年02月21日 09:02:53 作者:
本篇文章主要是對(duì)jquery 無(wú)限級(jí)下拉菜單的簡(jiǎn)單實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
本例子使用json數(shù)據(jù),拼接ul和li來(lái)實(shí)現(xiàn)的
效果圖:

1.準(zhǔn)備json數(shù)據(jù):
var menuData = [
{id:0,pid:-1,name:"訂購(gòu)產(chǎn)品",url:"",children:[
{id:1,pid:0,name:"電腦配件",url:"http://chabaoo.cn",children:[
{id:20,pid:1,name:"cpu",url:"http://chabaoo.cn",children:[
{id:30,pid:20,name:"Intel",url:"http://chabaoo.cn",children:[
{id:3000,pid:30,name:"Intel 01",url:""},
{id:3001,pid:30,name:"Intel 02",url:""},
{id:3002,pid:30,name:"Intel 03",url:""},
{id:3003,pid:30,name:"Intel 04",url:""},
{id:3004,pid:30,name:"Intel 05",url:""},
{id:3005,pid:30,name:"Intel 06",url:""},
{id:3006,pid:30,name:"Intel 07",url:""},
{id:3007,pid:30,name:"Intel 08",url:""},
{id:3008,pid:30,name:"Intel 09",url:""}
]},
{id:31,pid:20,name:"AMD",url:"http://chabaoo.cn",children:[
{id:3100,pid:31,name:"AMD 01",url:""},
{id:3101,pid:31,name:"AMD 02",url:""},
{id:3102,pid:31,name:"AMD 03",url:""},
{id:3103,pid:31,name:"AMD 04",url:""},
{id:3104,pid:31,name:"AMD 05",url:""},
{id:3105,pid:31,name:"AMD 06",url:""},
{id:3106,pid:31,name:"AMD 07",url:""},
{id:3107,pid:31,name:"AMD 08",url:""},
{id:3108,pid:31,name:"AMD 09",url:""}
]}
]},
{id:21,pid:1,name:"內(nèi)存",url:"http://chabaoo.cn"},
{id:22,pid:1,name:"硬盤(pán)",url:"http://chabaoo.cn"},
{id:23,pid:1,name:"主板",url:"http://chabaoo.cn"},
{id:24,pid:1,name:"顯卡",url:"http://chabaoo.cn"},
{id:25,pid:1,name:"顯示器",url:"http://chabaoo.cn"},
{id:26,pid:1,name:"主機(jī)箱",url:"http://chabaoo.cn"},
{id:27,pid:1,name:"主機(jī)箱電源",url:"http://chabaoo.cn"},
{id:28,pid:1,name:"鍵鼠(有線(xiàn))",url:"http://chabaoo.cn"},
{id:29,pid:1,name:"鍵鼠(無(wú)線(xiàn))",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:101,pid:0,name:"監(jiān)控器材",children:[
{id:102,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:103,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:104,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:112,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:113,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:114,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:115,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:116,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:117,pid:101,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:201,pid:0,name:"數(shù)碼產(chǎn)品",children:[
{id:202,pid:201,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:301,pid:0,name:"網(wǎng)絡(luò)產(chǎn)品",children:[
{id:302,pid:301,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:401,pid:0,name:"打印耗材",children:[
{id:402,pid:401,name:"打印機(jī)",url:"http://chabaoo.cn"},
{id:403,pid:401,name:"油墨",url:"http://chabaoo.cn"},
{id:404,pid:401,name:"紙張",url:"http://chabaoo.cn"},
{id:405,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:406,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:407,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:408,pid:401,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"}
]},
{id:1000,pid:-1,name:"我的訂單",url:"",children:[
{id:1001,pid:1000,name:"已過(guò)期訂單",url:""},
{id:1001,pid:1000,name:"已付款訂單",url:""}
]},
{id:2000,pid:-1,name:"公司信息",url:"",children:[
{id:2001,pid:2000,name:"最新新聞",url:""},
{id:2002,pid:2000,name:"公司地址",url:""}
]}
];
2.html代碼:
<div id="menu"><ul id="baseMenu"></ul></div>
3.解析json數(shù)據(jù)(plugin-menu.js文件):剛學(xué)會(huì)寫(xiě)jquery插件,寫(xiě)的還比較亂,湊合著看吧
(function($){
$.fn.extend({
menu:function(options){
var defaults = {
data:[],
ulId:"baseMenu"
};
var options = $.extend(defaults, options);
// 開(kāi)始拼接ul,li
$.each(options.data,function(i,v){
var li = $("<li id='"+options.data[i].id+"' name='"+options.data[i].pid+"'></li>");
var _a = $("<a>"+options.data[i].name+"</a>");
_a.attr("href",options.data[i].url)
.appendTo(li);
_each(options.data[i],li);
li.appendTo($("#"+options.ulId));
});
// 給li添加事件
$(this).find("li").hover(function(){
var id = $(this).attr("id");
$(this).find("ul[name='"+id+"']").show();
},function(){
var id = $(this).attr("id");
$(this).find("ul[name='"+id+"']").hide();
});
}
});
})(jQuery);
因?yàn)橹С譄o(wú)限級(jí),所以肯定會(huì)用到遞歸方法:
function _each(data,li){
if(data==undefined||data.children==undefined){
return false;
}
var ul = $("<ul name='"+data.id+"' style='display:none;'></ul>");
$.each(data.children,function(i,v){
var _li = $("<li id='"+data.children[i].id+"' name='"+data.children[i].pid+"'></li>");
var _a = $("<a>"+data.children[i].name+"</a>");
_a.attr("href",data.children[i].url)
.attr("target","_blank")
.appendTo(_li);
if(data.children[i].children!=undefined){
_each(data.children[i],_li);
}
_li.appendTo(ul);
});
ul.appendTo(li);
}
4.調(diào)用插件:
$(function() {
$("#menu").menu({data:menuData,ulId:"baseMenu"});
});
最后,css樣式:
ul,li{list-style:none;padding:0px;margin:0px;}
#menu *{line-height:30px;}
#menu a{text-decoration:none;}
#menu ul{text-align:left;}
#menu>ul>li{text-align:center;width:80px;float:left;}
#menu>ul>li>a{color:#000;}
#menu>ul>li:hover{background:#F0F0F0;}
#menu>ul>li ul{display:none;width:150px;position:absolute;background:#c1cd94;box-shadow:2px 2px 2px #000;-webkit-box-shadow:2px 2px 2px #000;
-moz-box-shadow:2px 2px 2px #123;}
#menu>ul>li>ul li{padding-left:5px; position:relative;}
#menu>ul>li>ul li>a{color:#000;}
#menu>ul>li>ul li:hover{background:#d3dbb3;}
#menu>ul>li>ul>li ul{left:150px; top:0px;}
效果圖:

1.準(zhǔn)備json數(shù)據(jù):
復(fù)制代碼 代碼如下:
var menuData = [
{id:0,pid:-1,name:"訂購(gòu)產(chǎn)品",url:"",children:[
{id:1,pid:0,name:"電腦配件",url:"http://chabaoo.cn",children:[
{id:20,pid:1,name:"cpu",url:"http://chabaoo.cn",children:[
{id:30,pid:20,name:"Intel",url:"http://chabaoo.cn",children:[
{id:3000,pid:30,name:"Intel 01",url:""},
{id:3001,pid:30,name:"Intel 02",url:""},
{id:3002,pid:30,name:"Intel 03",url:""},
{id:3003,pid:30,name:"Intel 04",url:""},
{id:3004,pid:30,name:"Intel 05",url:""},
{id:3005,pid:30,name:"Intel 06",url:""},
{id:3006,pid:30,name:"Intel 07",url:""},
{id:3007,pid:30,name:"Intel 08",url:""},
{id:3008,pid:30,name:"Intel 09",url:""}
]},
{id:31,pid:20,name:"AMD",url:"http://chabaoo.cn",children:[
{id:3100,pid:31,name:"AMD 01",url:""},
{id:3101,pid:31,name:"AMD 02",url:""},
{id:3102,pid:31,name:"AMD 03",url:""},
{id:3103,pid:31,name:"AMD 04",url:""},
{id:3104,pid:31,name:"AMD 05",url:""},
{id:3105,pid:31,name:"AMD 06",url:""},
{id:3106,pid:31,name:"AMD 07",url:""},
{id:3107,pid:31,name:"AMD 08",url:""},
{id:3108,pid:31,name:"AMD 09",url:""}
]}
]},
{id:21,pid:1,name:"內(nèi)存",url:"http://chabaoo.cn"},
{id:22,pid:1,name:"硬盤(pán)",url:"http://chabaoo.cn"},
{id:23,pid:1,name:"主板",url:"http://chabaoo.cn"},
{id:24,pid:1,name:"顯卡",url:"http://chabaoo.cn"},
{id:25,pid:1,name:"顯示器",url:"http://chabaoo.cn"},
{id:26,pid:1,name:"主機(jī)箱",url:"http://chabaoo.cn"},
{id:27,pid:1,name:"主機(jī)箱電源",url:"http://chabaoo.cn"},
{id:28,pid:1,name:"鍵鼠(有線(xiàn))",url:"http://chabaoo.cn"},
{id:29,pid:1,name:"鍵鼠(無(wú)線(xiàn))",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:101,pid:0,name:"監(jiān)控器材",children:[
{id:102,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:103,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:104,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:112,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:113,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:114,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:115,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:116,pid:101,name:"攝像頭",url:"http://chabaoo.cn"},
{id:117,pid:101,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:201,pid:0,name:"數(shù)碼產(chǎn)品",children:[
{id:202,pid:201,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:301,pid:0,name:"網(wǎng)絡(luò)產(chǎn)品",children:[
{id:302,pid:301,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"},
{id:401,pid:0,name:"打印耗材",children:[
{id:402,pid:401,name:"打印機(jī)",url:"http://chabaoo.cn"},
{id:403,pid:401,name:"油墨",url:"http://chabaoo.cn"},
{id:404,pid:401,name:"紙張",url:"http://chabaoo.cn"},
{id:405,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:406,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:407,pid:401,name:"攝像頭",url:"http://chabaoo.cn"},
{id:408,pid:401,name:"攝像頭",url:"http://chabaoo.cn"}
],url:"http://chabaoo.cn"}
]},
{id:1000,pid:-1,name:"我的訂單",url:"",children:[
{id:1001,pid:1000,name:"已過(guò)期訂單",url:""},
{id:1001,pid:1000,name:"已付款訂單",url:""}
]},
{id:2000,pid:-1,name:"公司信息",url:"",children:[
{id:2001,pid:2000,name:"最新新聞",url:""},
{id:2002,pid:2000,name:"公司地址",url:""}
]}
];
2.html代碼:
復(fù)制代碼 代碼如下:
<div id="menu"><ul id="baseMenu"></ul></div>
3.解析json數(shù)據(jù)(plugin-menu.js文件):剛學(xué)會(huì)寫(xiě)jquery插件,寫(xiě)的還比較亂,湊合著看吧
復(fù)制代碼 代碼如下:
(function($){
$.fn.extend({
menu:function(options){
var defaults = {
data:[],
ulId:"baseMenu"
};
var options = $.extend(defaults, options);
// 開(kāi)始拼接ul,li
$.each(options.data,function(i,v){
var li = $("<li id='"+options.data[i].id+"' name='"+options.data[i].pid+"'></li>");
var _a = $("<a>"+options.data[i].name+"</a>");
_a.attr("href",options.data[i].url)
.appendTo(li);
_each(options.data[i],li);
li.appendTo($("#"+options.ulId));
});
// 給li添加事件
$(this).find("li").hover(function(){
var id = $(this).attr("id");
$(this).find("ul[name='"+id+"']").show();
},function(){
var id = $(this).attr("id");
$(this).find("ul[name='"+id+"']").hide();
});
}
});
})(jQuery);
因?yàn)橹С譄o(wú)限級(jí),所以肯定會(huì)用到遞歸方法:
復(fù)制代碼 代碼如下:
function _each(data,li){
if(data==undefined||data.children==undefined){
return false;
}
var ul = $("<ul name='"+data.id+"' style='display:none;'></ul>");
$.each(data.children,function(i,v){
var _li = $("<li id='"+data.children[i].id+"' name='"+data.children[i].pid+"'></li>");
var _a = $("<a>"+data.children[i].name+"</a>");
_a.attr("href",data.children[i].url)
.attr("target","_blank")
.appendTo(_li);
if(data.children[i].children!=undefined){
_each(data.children[i],_li);
}
_li.appendTo(ul);
});
ul.appendTo(li);
}
4.調(diào)用插件:
復(fù)制代碼 代碼如下:
$(function() {
$("#menu").menu({data:menuData,ulId:"baseMenu"});
});
最后,css樣式:
復(fù)制代碼 代碼如下:
ul,li{list-style:none;padding:0px;margin:0px;}
#menu *{line-height:30px;}
#menu a{text-decoration:none;}
#menu ul{text-align:left;}
#menu>ul>li{text-align:center;width:80px;float:left;}
#menu>ul>li>a{color:#000;}
#menu>ul>li:hover{background:#F0F0F0;}
#menu>ul>li ul{display:none;width:150px;position:absolute;background:#c1cd94;box-shadow:2px 2px 2px #000;-webkit-box-shadow:2px 2px 2px #000;
-moz-box-shadow:2px 2px 2px #123;}
#menu>ul>li>ul li{padding-left:5px; position:relative;}
#menu>ul>li>ul li>a{color:#000;}
#menu>ul>li>ul li:hover{background:#d3dbb3;}
#menu>ul>li>ul>li ul{left:150px; top:0px;}
您可能感興趣的文章:
- 用jquery實(shí)現(xiàn)的一個(gè)超級(jí)簡(jiǎn)單的下拉菜單
- 來(lái)自國(guó)外的30個(gè)基于jquery的Web下拉菜單
- jquery實(shí)現(xiàn)下拉菜單的二級(jí)聯(lián)動(dòng)利用json對(duì)象從DB取值顯示聯(lián)動(dòng)
- 巧用jquery解決下拉菜單被Div遮擋的相關(guān)問(wèn)題
- jquery實(shí)現(xiàn)鼠標(biāo)滑過(guò)顯示二級(jí)下拉菜單效果
- jQuery結(jié)合CSS制作漂亮的select下拉菜單
- 精心挑選的15個(gè)jQuery下拉菜單制作教程
- jQuery+PHP+MySQL二級(jí)聯(lián)動(dòng)下拉菜單實(shí)例講解
- jquery實(shí)現(xiàn)很酷的網(wǎng)頁(yè)頂部圖標(biāo)下拉菜單效果
- jquery實(shí)現(xiàn)簡(jiǎn)單的二級(jí)導(dǎo)航下拉菜單效果
- jquery實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)顯示下劃線(xiàn)的漸變下拉菜單效果代碼
- jQuery實(shí)現(xiàn)的縱向下拉菜單實(shí)例詳解【附demo源碼下載】
相關(guān)文章
jQuery實(shí)現(xiàn)頁(yè)面評(píng)論欄中訪(fǎng)客信息自動(dòng)填寫(xiě)功能的方法
訪(fǎng)客信息自動(dòng)填寫(xiě)即是利用cookie來(lái)記錄訪(fǎng)客第一次評(píng)論時(shí)填寫(xiě)的信息,這樣以后再評(píng)論時(shí)實(shí)現(xiàn)一個(gè)自動(dòng)填寫(xiě),這里我們以WordPress為例展示jQuery實(shí)現(xiàn)頁(yè)面評(píng)論欄中訪(fǎng)客信息自動(dòng)填寫(xiě)功能的方法:2016-05-05tuzhu_req.js 實(shí)現(xiàn)仿百度圖片首頁(yè)效果
這篇文章主要介紹了tuzhu_req.js 實(shí)現(xiàn)仿百度圖片首頁(yè)效果的相關(guān)資料,需要的朋友可以參考下2015-08-08jQuery EasyUI 中文API Button使用實(shí)例
jQuery EasyUI 中文API Button使用小結(jié),需要的朋友可以參考下。2010-04-04淺析jQuery的鏈?zhǔn)秸{(diào)用之each函數(shù)
如果對(duì)于jquery的$()包裝器函數(shù)還不是很清楚,請(qǐng)先參閱我的上一篇日志:淺析jQuery的鏈?zhǔn)秸{(diào)用2010-12-12jQuery通過(guò)點(diǎn)擊行來(lái)刪除HTML表格行的實(shí)現(xiàn)示例
從一個(gè)HTML表使用一些時(shí)髦的效果,只要按一下該行,改行即可被刪除,這個(gè)示例比較簡(jiǎn)單,新手朋友們可以學(xué)習(xí)下2014-09-09