4.4、元素的事件绑定与取消事件的方式

一、给元素绑定事件,并且设置是否捕获 及IE的兼容

        var odiv = document.getElementsByTagName('div')[0]

        function fn1() {
            console.log('1')
        }

        function fn2() {
            console.log('2')
        }

//绑定点击事件 也可以绑定多个事件
// 元素.addEventListener('事件', 函数, 是否捕获默认false)//1
// odiv.addEventListener('click', fn1, false) //1
// odiv.addEventListener('click', fn2, false) //2
// 先打印的1后打印的2
// IE8及以下不支持addEventListener 而支持attachEvent('事件',函数)
// odiv.attachEvent('事件', 函数);
// odiv.attachEvent('onclick', fn1); //1
// odiv.attachEvent('onclick', fn2); //2
// 先打印的2后打印的1
// addEventListener和 attachEvent区别
// 1) attachEvent 没有捕获 事件前面要加on 执行顺序是 从下往上执行
// 2)addEventListener 有捕获 默认false

二、封装兼容绑定事件的函数

addEvent(odiv, 'click', fn1)
addEvent(odiv, 'click', fn2)
    // 封装函数
function addEvent(obj, event, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(event, fn, false)
    } else {
        obj.attachEvent('on' + event, fn)
    }
}
    // 上述封装的方法还有问题:this的指向不确定

三、取消事件的方式
普通的绑定事件的取消
odiv.onclick = function() {
console.log(‘普通的绑定形式1’)
}
odiv.onclick = function() {
console.log(‘普通的绑定形式2’)
}
odiv.onclick = null;
取消 // odiv.onclick = null;

    addEventListenner事件的取消

odiv.addEventListener(‘click’, fn1, false)
odiv.removeEventListener(‘click’, fn1, false)

取消事件的兼容处理
// 取消事件的兼容
function removeEvent(obj, event, fn) {
if (obj.removeEventListener) {
obj.removeEventListener(event, fn, false)
} else {
obj.detachEvent(‘on’ + event, fn)
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值