首页  ·  知识 ·  前端
后台管理菜单类-MenuSwitch
kinglong  http://www.klstudio.com/post/136.html  综合  编辑:dezai  图片来源:网络
function MenuSwitch(className){ this._elements = [];&nbs

function MenuSwitch(className){            this._elements = [];       this._default = -1;       this._className = className;       this._previous = false;   }   MenuSwitch.prototype.setDefault = function(id){       this._default = Number(id);   }   MenuSwitch.prototype.setPrevious = function(flag){       this._previous = Boolean(flag);   }   MenuSwitch.prototype.collectElementbyClass = function(){       this._elements = [];       var allelements = document.getElementsByTagName("div");       for(var i=0;i  this._elements = [];
  this._default = -1;
  this._className = className;
  this._previous = false;
 }
 MenuSwitch.prototype.setDefault = function(id){
  this._default = Number(id);
 }
 MenuSwitch.prototype.setPrevious = function(flag){
  this._previous = Boolean(flag);
 }
 MenuSwitch.prototype.collectElementbyClass = function(){
  this._elements = [];
  var allelements = document.getElementsByTagName("div");
  for(var i=0;i   var mItem = allelements[i];
   if (typeof mItem.className == "string" && mItem.className == this._className){
    var h3s = mItem.getElementsByTagName("h3");
    var uls = mItem.getElementsByTagName("ul");
    if(h3s.length == 1 && uls.length == 1){
     h3s[0].style.cursor = "hand";     
     if(this._default == this._elements.length){
      uls[0].style.display = "block"; 
     }else{
      uls[0].style.display = "none"; 
     }
     this._elements[this._elements.length] = mItem;
    }    
   }
  }
 }
 MenuSwitch.prototype.open = function(mElement){
  var uls = mElement.getElementsByTagName("ul");
  uls[0].style.display = "block";
 }
 MenuSwitch.prototype.close = function(mElement){
  var uls = mElement.getElementsByTagName("ul");
  uls[0].style.display = "none";
 }
 MenuSwitch.prototype.isOpen = function(mElement){
  var uls = mElement.getElementsByTagName("ul");  
  return uls[0].style.display == "block";
 }
 MenuSwitch.prototype.toggledisplay = function(header){
  var mItem;
  if(window.addEventListener){
   mItem = header.parentNode;
  }else{
   mItem = header.parentElement;
  }
  if(this.isOpen(mItem)){
   this.close(mItem);
  }else{
   this.open(mItem);
  }  
  if(!this._previous){
   for(var i=0;i    if(this._elements[i] != mItem){    
     var uls = this._elements[i].getElementsByTagName("ul");
     uls[0].style.display = "none";  
    }
   }
  }
 } 
 MenuSwitch.prototype.init = function(){  
  var instance = this;
  this.collectElementbyClass();
  if(this._elements.length==0){
   return;
  }
  for(var i=0;i   var h3s = this._elements[i].getElementsByTagName("h3");   
   if(window.addEventListener){
    h3s[0].addEventListener("click",function(){instance.toggledisplay(this);},false);
   }else{
    h3s[0].onclick = function(){instance.toggledisplay(this);}
   }
  }
 }
 
调用说明
view plaincopy to clipboardprint?//根据样式名来新建MenuSwitch对象;   var mSwitch = new MenuSwitch("menuDiv");   //设置初始展开的菜单项;   mSwitch.setDefault(0);   //设置菜单项在同一时间内可以打开多个。   mSwitch.setPrevious(true);   //功能初始化;   mSwitch.init(); 

 

文件打包下载:http://www.klstudio.com/demo/javascript/menuswitch/files.rar

本文作者:kinglong 来源:http://www.klstudio.com/post/136.html
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读