• 简易选项卡面向对象加事件委托方式实现


      选项卡,都不陌生,今天把之前的代码翻出来重写了下。不多说了,直接上代码

    <script>
    	function Tab(){
    		this.init.apply(this,arguments);
    	}
    	
    	Tab.prototype = {
    		/*
    			初始化方法
    			获取html元素(视图),并绑定事件
    		*/
    		init:function(){
    			this.tab = document.getElementById('tab');
    			this.tabs = tab.getElementsByTagName('li');
    			this.contents = document.getElementById('content').getElementsByTagName('ul');
    			
    			for(var i=0;i<this.tabs.length;i++){
    				this.tabs[i].index = i;
    			}
    			
    			this.addListener(this.tab,'click',this.bind(this,this.showTab));
    		},
    		/*
    			改变函数func的执行上下文
    		*/
    		bind:function(obj,func){
    			return function(e){
    				func.apply(obj,arguments);
    			}
    		},
    		/*
    			通用事件监听方法兼容w3c和IE
    		*/
    		addListener:function(ele,envtype,handler,isBubble){
    			if(ele.addEventListener){
    				ele.addEventListener(envtype,handler,isBubble);
    			}else if(ele.attachEvent){
    				ele.attachEvent("on" + envtype,handler);
    			}else{
    				ele["on" + enctype] = handler;
    			}
    		},
    		/*
    			选项卡的业务逻辑
    		*/
    		showTab:function(e){
    			var event = e || window.event;
    			var targetObj = event.target || event.srcElement;
    			if(targetObj.nodeName == 'LI'){
    				for(var i=0;i<this.tabs.length;i++){
    				this.tabs[i].className = "";
    			  }
    				targetObj.className = 'current';
    				for(var i=0;i<this.contents.length;i++){
    					this.contents[i].style.display = 'none';
    				}
    				this.contents[targetObj.index].style.display = 'block';
    			}
    		}
    	}
    	
    	window.onload = function(){
    		new Tab();
    	}
    </script>
    

      

  • 相关阅读:

    每日小练习
    完数
    6.13的练习
    字典
    sql server多条记录同时插入一张表
    sql server从表到表——复制,备份
    Bootstrap关于row
    Bootstrap 关于标签,徽章,巨幕,页头,缩略图,自定义内容的使用
    Bootstrap 关于分页的使用
  • 原文地址:https://www.cnblogs.com/submerge/p/4445134.html
Copyright © 2020-2023  润新知