首先建立一個(gè)數(shù)據(jù)表menu
mId 菜單主鍵 name 菜單名稱(chēng) url 菜單鏈接 father 低級(jí)菜單ID sub 是否最底層菜單(用于判斷是否還可以繼續(xù)展開(kāi)) target 菜單鏈接目標(biāo)(用ajax方式打開(kāi)時(shí)作為顯示id) pa 菜單參數(shù)(這項(xiàng)用于ajax方式打開(kāi)菜單)
制作一個(gè)菜單對(duì)象類(lèi)
class Menu{ private int mId; private String name; ...//其它成員
public getMid(){ return mId; } public setMid(int mId){ this.mId = mId; } ....//其它成員的get set方法, }
另一個(gè)是操作類(lèi)
class MenuOpt(){ public Vector getMenus(int father){ Vector vector = new Vector(); //這里是取得父級(jí)菜單ID為father的全部菜單 //并封裝進(jìn)Vector的一個(gè)對(duì)象中。。 return vector; } }
其次就是一般的jsp文件了。但要注意以前說(shuō)過(guò)的,不要包含<html><body>標(biāo)簽! menu.jsp:
<%@page contentType="text/html; charset=GB2312"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--前面用到了JSTL的標(biāo)簽定義(學(xué)JSP的強(qiáng)烈推薦!)--> <jsp:useBean id="menu" scope="page" class="ycoe.basic.MenuOpt"/> <jsp:setProperty name="menu" property="father" value="${param.father}"/> <div> <c:forEach var="m" items="${menu.vector}" varStatus = "c"> <c:choose> <c:when test="${m.sub eq 'Y'}"> <div onClick="showMenu('${m.mid}','${m.url}','${m.target}','father=${m.mid}')"> <img src="pic/menu0.gif" id="img${m.mid}" alt="" style=" cursor:hand;"> <a href="#" class="text1">${m.name}</a> </div> <div style="display:none;" id="tr${m.mid}"> <div style="padding-left:12pt" id="${m.mid}"></div> </div> </c:when> <c:otherwise> <div onclick="openMenu('${m.url}','${m.target}','${m.pa}');"> <img src="pic/menu1.gif" id="img${m.mid}" alt=""> <a href="#" class="text1">${m.name}</a> </div> </c:otherwise> </c:choose> </c:forEach> </div>
menu.js:
//operMenu(打開(kāi)下拉菜單的ID,打開(kāi)的地址,鏈接打開(kāi)的目標(biāo),參數(shù))。 //這是用在menu.jsp的方法 function showMenu(id,url,target,param){ var trObj = document.getElementById("tr"+id); var tdObj = document.getElementById(id); //try{ if(document.getElementById("tr"+id).style.display == "none"){ //顯示菜單 if(tdObj.innerHTML == null || tdObj.innerHTML == ""){ //提取數(shù)據(jù) document.getElementById("tr"+id).style.display = ""; document.getElementById("img"+id).src = "pic/menu2.gif" Bcandy(id,"page/menu.jsp",param,""); openMenu(url,target,param); }else{ //如果里面有內(nèi)容,直接顯示 document.getElementById("tr"+id).style.display = ""; document.getElementById("img"+id).src = "pic/menu2.gif" openMenu(url,target,param); } //Bcandy(target,url,param,"");//打開(kāi)菜單鏈接 }else{ //隱藏菜單 document.getElementById("tr"+id).style.display = "none"; document.getElementById("img"+id).src = "pic/menu0.gif" } //}catch(e){} }
//打開(kāi)菜單 function openMenu(url,target,param){ //這里不用我寫(xiě)了吧。有好幾種實(shí)現(xiàn)方法,建議使用ajax實(shí)現(xiàn)! }
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁(yè) Ajax 基礎(chǔ) [1] 下一頁(yè) 基于Ajax的無(wú)限級(jí)菜單實(shí)例 [3]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|