监听与解绑

监听与绑定

on 绑定事件写法

DOM.on + ’事件类型‘ = 事件处理函数

DOM.οnclick= as //不带括号

function as(){} //事件处理函数

监听写法

addEventListener 监听

DOM.addEventListener('事件',调用函数,状态)

DOM.addEventListener('click',调用函数,false)

状态 :事件捕获 事件目标阶段 事件冒泡 on绑定默认冒泡阶段调用函数 ture:事件捕获 false:事件冒泡

removeEventListener 解绑

DOM.removeEventListener(事件 ,调用有名函数)

IE版本监听写法

兼容处理 IE9以前不支持监听 用的是 attachEvent 和 datachEvent

DOM.attachEvent('onclick',调用函数,状态) 事件加on

兼容写法

//为任意一个元素绑定事件:元素,事件类型,事件处理函数
function addEventListener(element,type,fn) {
    if(element.addEventListener){
        //支持
        element.addEventListener(type,fn,false);
    }else if(element.attachEvent){
    //IE老版本
        element.attachEvent("on"+type,fn);
    }else{
    //绑定写法
        element["on"+type]=fn;
    }
}


//为任意的一个元素解绑某个事件:元素,事件类型,事件处理函数
function removeEventListener(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;
    }
}

事件监听与绑定区别

  • on会被后面的on事件覆盖 addEventListener不会覆盖

  • addEventListener可以指定事件回调函数触发时机(捕获 或 冒泡)on事件只有在冒泡阶段触发

匿名解绑监听

var btn = document.getElementById('btn');
var cancel = document.getElementById('cancel');
var listenBySL = function(element, type, handler, capture){
	capture = capture || false;
    if(element.addEventListener){
        // W3C内核
        element.addEventListener(type, handler, capture);
    }else{
        // IE内核
        element.attachEvent('on'+type, handler, capture);
    }

    return {
        "remove":function(){
            if(element.removeEventListener){
                // W3C内核
                element.removeEventListener(type, handler, capture);
            }else{
                // IE内核
                element.detachEvent('on'+type, handler, capture);
            } 
    	}
    }
}
// 添加监听
var addAlert = listenBySL(btn,'click',function(){
    alert(123);
});
listenBySL(cancel,'click',function(){
    // 移除监听
    addAlert.remove();
    alert('移除成功');
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值