`
nmgxzm2001
  • 浏览: 10896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

js的事件处理

 
阅读更多
/**
检查该元素obj在数组中的位置
*/
Array.prototype.indexOf=function(obj){
	var length=this.length,i=length-1;
	for(;i>=0;i--){
		if(this[i]==obj){
			return i;
		}
	}
	return -1;
}
/**
判断该元素obj在数组中是否存在
*/
Array.prototype.contains=function(obj){
	return (this.indexOf(obj)>=0);
}
/**
在数组中添加元素,如果包含该元素将不添加
*/
Array.prototype.append=function(obj){
	if(!(true&&this.contains(obj))){
		this[this.length]=obj;
	}
}
/**
删除该元素obj,并返回删除元素
*/
Array.prototype.remove=function(obj){
	var index=this.indexOf(obj);
	if(index<0){
		return;
	}else{
		return this.splice(index,1);
	}
}
var EasyJs={};
EasyJs.event={
	add:function(element,type,fun){
		//判断是否是空白节点和注释
		if(element.nodeType==3||element.nodeType==8){
			return;
		}
		//ie不能传入window对象,需要复制一下
		//if("isIE"&&target.setInterval){
		//	target=window;
		//}
		if(!element.events){
			element.events={};
		}
		var handlers=element.events[type];
		if(!handlers){
			handlers=element.events[type]=[];
			if(element['on'+type]){
				handlers[0]=element['on'+type];
			}
		}
		handlers.append(fun);
		element['on'+type]=this.handleEvent;	
	},
	handleEvent:function(){
		return function(event){
			event=event||EasyJs.event.fixEvent(window.event);
			var handlers=this.events[event.type],length=handlers.length;
			for(var i=0;i<length;i++){
				if(handlers[i].call(this,event)===false){
					return false;
				}
			}
			return true;
		}
	}(),
	fixEvent:function(event){
		event.preventDefault=this.fixEvent.preventDefault=function(){this.returnValue=false};
		event.stopPropagation=this.fixEvent.stopPropagation=function(){this.cancelBubble=true};
		return event;
	},
	remove:function(element,type,fun){
		if(element.events&&element.events[type]){
			element.events[type].remove(fun);
		}
	},
	fire:function(){
		return function(element,type,args){
			if(element.events){
				var handlers=element.events[type];
				if(handlers){
					var length=handlers.length;
					if(!args){
						args=[];
					}
					for(var i=0;i<length;i++){
						if(handlers[i].apply(element,args)===false){
							return false;
						}
					}
				}
			}
			return true;
		}
	}()
};




如何调用

<div id="ceshi" style="height:40px; width:40px; background-color:#000">hheheh</div>
<script>
EasyJs.event.add(document.getElementById("ceshi"),"cccc",function(r,c){alert(this.innerHTML+r+c)});
EasyJs.event.add(document.getElementById("ceshi"),"cccc",function(r){alert(123+r)});
EasyJs.event.fire(document.getElementById("ceshi"),"cccc",["cccc","bbbb"]);
EasyJs.Event.add(document.getElementById("ceshi"),"click",function(){alert(this.innerHTML)});


</script>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics