学习浅谈事件监听

看过不少关于事件绑定(事件监听)的文章,曾经也白痴过。现在稍微懂点,仅给初学者了解。

初期看到这个事件很陌生,因为作为美工的我负责的是拔特效,写一些下拉菜单。

直到有一天,当写一个模拟select菜单的时候遇见一个问题,当时和我另外一个同事写的东西通用了一个id的特效,但是我的代码被覆盖了。

知道网上搜索才了解到解决方法。

事件:addEventListener//FF,Chorme..

        attachEvent//ie

例子:

window.onload = function(){

var oDiv=document.getElementById('div1');

oDiv.onclick=function(){

alert('a');

}

oDiv.onclick=function(){

alert('b');

}

}

//弹出的内容会是b.    a不会出现

利用事件监听

window.onload = function(){

var oDiv=document.getElementById('div1');

if(oDiv.addEventListener){//兼容ff  chorme

oDiv.addEventListener('click',fn,false);

oDiv.addEventListener('click',function(){

alert(2);

},false);

}

else{

oDiv.attachEvent('onclick',fn);

oDiv.attachEvent('onclick',

function(){

alert(2);

}

);

}

}

function fn(){

alert(1);

}

//这样我们添加几个事件他都会执行  唯一的区别就是ie6,7,8和其他浏览器弹出的顺序不一样。ff和chorme弹出是1,2  而6,7,8弹出的是2,1。

下面让我们来写一个完整的通用的事件监听

//通用部分

function getAddEvent(obj,ev,fn){

if(obj.addEventListener){

obj.addEventListener(ev,fn,false);//特有形式加false具体怎么理解,我也不知道

}

else{

obj.attachEvent('on'+ev,fn);

}

}

window.onload=function(){
var oDiv = document.getElementById('div1')
getAddEvent(oDiv,'click',function(){
alert(1);
})
getAddEvent(oDiv,'click',function(){
alert(2);
})
}

综合了以前所学的写了一个基本方法专门调用事件

style

#div1{ width:200px; height:100px; background:#F00;}

html

<div id="div1"></div>

js

var eventUtil={
addEvent:function(obj,ev,fn){//添加事件绑定
if(obj.addEventListener){
obj.addEventListener(ev,fn,false);
}
else{
obj.attachEvent('on'+ev,fn);
}
},
reomveEvent:function(obj,ev,fn){//移除事件绑定
if(obj.addEventListener){
obj.removeEventListener(ev,fn,false);
return true;
}
else{
obj.detachEvent('on'+ev,fn);
return true;
}
},
getStyle:function(obj,name){//获取css样式
if(obj.currentStyle){
return obj.currentStyle[name];
}
else{
return getComputedStyle(obj,null)[name];
}
}
}
window.onload=function(){
var oDiv= document.getElementById('div1');
console.log(eventUtil.getStyle(oDiv,'width'));
eventUtil.addEvent(oDiv,'click',function(){alert(1)});
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值