91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

多級伸縮菜單——組合模式

發布時間:2020-06-25 19:11:17 來源:網絡 閱讀:979 作者:janwool 欄目:開發技術

    常見的后臺管理模板都有一個伸縮菜單,我們可以通過CSS輕松實現,但是如果我們動態的添加菜單,javascript的操作Dom將會變得很繁瑣,我們可以應用組合模式來輕松實現。

    組合模式用于把一組相似的對象當做一個單一的對象,以樹形結構的形式來組合對象,以實現部分和整體的關系。下面的實例通過多級的伸縮菜單實現組合模式,其類圖如下:

多級伸縮菜單——組合模式


實現代碼:

var Menu = Class.extend({
	isLeaf:true,
	subMenu:[],
	label:'菜單',
	href:'#',
	ctor:function(_label,_href,_isLeaf = true,_subMenu = []){
		this.isLeaf = _isLeaf;
		this.subMenu = _subMenu;
		this.label = _label;
		this.href = _href;
	},
	addSubMenu:function(_menu){
		this.subMenu.push(_menu);
	},
	toString:function(){
		var html = '';
		if(!this.isLeaf){
			html += '<li onclick = "toggleMenu(this)"><a href = "' + this.href + '">'+this.label + '</a>';
			html += "<ul class = 'myHide'>";
			for (var i = 0;i < this.subMenu.length ; i++)
			{
				html += this.subMenu[i].toString();
			}
			html += '</ul>';
			html += '</li>';
		}else{
			html += '<li ><a href = "' + this.href + '">'+this.label + '</a>';
			html += '</li>';
		}			
		return html;
	}
});
<body> 
<div id="navigation"> 
<ul id="listUL"> 

</ul> 
</div> 
</body> 
<script language="javascript"> 
function toggleMenu(obj){
	window.event? window.event.cancelBubble = true : e.stopPropagation();
	if(obj.childNodes[1].className == "myHide"){
		obj.childNodes[1].className = 'myShow';
		
	}else{
		obj.childNodes[1].className = 'myHide';
	}
	
	
}
(function(){
	var Home = new Menu("Home","#");
	var My = new Menu("My","#",false);
	var News = new Menu("News","#",false);
	var My_Info = new Menu("MyInfo",'#',false);
	var Info_Detail = new Menu("InfoDetail",'#',true);
	var My_Zone = new Menu("MyZone",'#',true);
	My_Info.addSubMenu(Info_Detail);
	My.addSubMenu(My_Info);
	My.addSubMenu(My_Zone);
	console.log(document.getElementById("listUL"));
	document.getElementById("listUL").innerHTML = Home.toString() + My.toString();
})();
</script>

具體的樣式可以下載源碼查看,實現的效果如圖(其實是三層菜單,修改代碼可以實現區分開樣式):

多級伸縮菜單——組合模式

組合模式最大的缺點是違反了依賴倒置原則。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡东县| 三台县| 武宣县| 丹巴县| 昂仁县| 灵川县| 庐江县| 巢湖市| 历史| 新兴县| 白山市| 新和县| 陆丰市| 阜新| 远安县| 和田县| 宜兴市| 万宁市| 敦煌市| 即墨市| 三江| 甘孜| 北川| 遵化市| 永春县| 洛宁县| 浠水县| 南川市| 南江县| 宁乡县| 祁东县| 齐齐哈尔市| 大宁县| 霍州市| 梁河县| 金沙县| 阜南县| 长治县| 竹北市| 化州市| 商都县|