事件绑定

事件绑定:又称(事件委托、事件代理),就是另外一种绑定事件的方法,而且可以绑定多个事件。主要是为了解决:同一类型的事件,后者会覆盖前者的问题;例如:

var redDiv = document.getElementById('redDiv');

redDiv.onclick = function(){

console.log(1);

}

redDiv.onclick = function(){

console.log(2);

}

上述代码只会打印"2",就是因为都是onclick事件,前者被后者覆盖了。所以我们要采用下面的事件绑定:


事件绑定的写法:

// 元素.addEventListener("不含on的事件名",function(){},false);//固定格式

我们先随意写一个函数:

function f1(ev){

var obj = window.event || ev;//解决兼容问题

console.log(obj.offsetX);

}

//非IE下绑定事件:

redDiv.addEventListener("click",f1,false);

redDiv.addEventListener("click",function(){

console.log(2);

},false);

可以看到:上面调用了两次redDiv.addEventListener事件,但是打印的结果既有"obj.offsetX",也有“2”,两者并不冲突,这就是事件绑定的好处。

清除事件,注意:清除的时候,函数要和绑定的时候的函数名一样

redDiv.removeEventListener("click",f1,false);



IE与非IE浏览器绑定和解除事件的写法不同,一定要注意!!!

// IE下绑定事件的方法

redDiv.attachEvent("onclick",f1);

// IE下解除绑定事件的方法

redDiv.detachEvent("onclick",f1);


//兼容的写法

if(redDiv.addEventListener){

redDiv.addEventListener("click",f1,false);

}else if(redDiv.attachEvent){

redDiv.attachEvent("onclick",f1);

}else{

redDiv.οnclick=f1;//这是为了兼容写法出问题的时候仍能有点击事件

}


/**************************************

addEvent(redDiv,"click",f1);

addEvent(redDiv,"mouseover",function(){

console.log("鼠标移入了");                            //这段代码就是调用了下方的函数。

});

chuEvent(redDiv,"click",f1);

****************************************/


//封装函数,用来解决兼容写法,方便随时调用

①绑定事件--兼容写法

function addEvent(element,type,fn){

if(element.addEventListener){

element.addEventListener(type,fn,false);

}else if(element.attachEvent){

element.attachEvent("on"+type,fn);

}else{

element["on"+type]=fn;

}

}



②清除事件--兼容写法

function chuEvent(element,type,fn){

if(element.removeEventListener){

element.removeEventListener(type,fn,false);

}else if(element.detachEvent){

element.detachEvent("on"+type,fn);

}else{

element["on"+type]=null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值