js中removeEventListener和detachEvent

1. removeEventListener(type,listener,useCapture)

  • type: 事件类型,比如 click
  • listener: 监听器 必须是一个实现了 EventListener 接口的对象,或者是一个函数。
  • useCapture: 可选 第三个参数是一个布尔值,指定是使用事件冒泡还是事件捕获。不写,默认false

2. detachEvent(type,listener);

  • type: 事件类型,比如 click
  • listener: 监听器 必须是一个实现了 EventListener 接口的对象,或者是一个函数。
<body>
	<input type="button" value="点击" id="btn">
</body>
<script src="../commons.js"></script>
<script>
var btn = my$('btn');

function btnClick() {
    alert('hello');
    //删除事件
    myRemoveEventListener(btn, 'click', btnClick);
}
//自定义添加事件
myAddEventListener(btn, 'click', btnClick);
</script>

commons.js

/*获取id元素*/
function my$(id) {
    return document.getElementById(id);
}

//处理注册事件的兼容性问题
//eventName ,不带on click  mouseover mouseout等等
function myAddEventListener(element, eventName, fn) {  //元素, 事件名称 ,事件处理函数
    if (element.addEventListener) {  //如果不支持,返回undefined  ,转换成boolean是false
        element.addEventListener(eventName, fn);
    } else if (element.attachEvent) { //判断是否支持attachEvent  IE6 - IE10
        element.attachEvent('on' + eventName, fn);
    } else {  //更古老的浏览器
        element['on' + eventName] = fn;  //相当于element.on(click) = fn;   click 只是其中之一
    }
}

//处理移除事件的兼容性问题
function myRemoveEventListener(element, eventName, fn) { //元素  事件名称/类型   要被移除的事件处理函数
    if (element.removeEventListener) {  //如果浏览器兼容removeEventListener 
        element.removeEventListener(eventName, fn);//省略了第三个参数param3(param1,param2,param3)
    } else if (element.detachEvent) {  //IE6 - IE10
        element.detachEvent('on' + eventName, fn);
    } else { //别的浏览器
        element['on' + eventName] = null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值