成都创新互联网站制作重庆分公司

多级伸缩菜单——组合模式-创新互联

常见的后台管理模板都有一个伸缩菜单,我们可以通过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 += ''+this.label + '';
			html += "";
			for (var i = 0;i < this.subMenu.length ; i++)
			{
				html += this.subMenu[i].toString();
			}
			html += '';
			html += '';
		}else{
			html += ''+this.label + '';
			html += '';
		}			
		return html;
	}
});
 
 
 

 
      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(); })();

具体的样式可以下载源码查看,实现的效果如图(其实是三层菜单,修改代码可以实现区分开样式):

多级伸缩菜单——组合模式

组合模式大的缺点是违反了依赖倒置原则。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:多级伸缩菜单——组合模式-创新互联
URL分享:http://cxhlcq.com/article/jejpc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部