addEventListener的三种用法

首先addEventListener得API

target.addEventListener(type, listener[, options]);

target.addEventListener(type, listener [,{capture: Boolean, bubbling: Boolean, once: Boolean}]);

target.addEventListener(type, listener[, useCapture]);


type表示监听事件类型的字符串。listener当所监听的事件类型触发时,会接收到一个事件通知(实现了 Event 接口的对象)对象。listener 必须是一个实现了 EventListener 接口的对象,或者是一个函数options 可选一个指定有关 listener 属性的可选参数对象。可用的选项如下:
  • capture:  Boolean,表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发。
  • once:  Boolean,表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。
  • passiveBoolean,表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。
  •  mozSystemGroup: 只能在 XBL 或者是 Firefox' chrome 使用,这是个 Boolean,表示 listener 被添加到 system group。
useCapture  可选Boolean,是指在DOM树中,注册了该listener的元素,是否会先于它下方的任何事件目标,接收到该事件。沿着DOM树向上冒泡的事件不会触发被指定为use capture(也就是设为true)的listener。当一个元素嵌套了另一个元素,两个元素都对同一个事件注册了一个处理函数时,所发生的事件冒泡和事件捕获是两种不同的事件传播方式。事件传播模式决定了元素以哪个顺序接收事件。进一步的解释可以查看 事件流 及 JavaScript Event order 文档。 如果没有指定, useCapture 默认为 false 。

第一种最普遍的用法
dom.addEventListener(type,function(){
...
},false)
绑定在dom的事件触发回调函数,可以触发函数的内部的逻辑

第二种用法,这种用法和this息息相关,当我们想在构造函数里面使用这个方法 注意在作用域
function Student(dom){
  this.name = '123';
  this.onclick1 = function (){
    alert(this.name);
  }
  this.onclick2 = function (){
    alert(this.name);
  }
  dom.addEventListener('click',this.onclick1,false);
  dom.addEventListener('click',this.onclick1.bind(this),false);
}
var s = new Student(document.querySelector(...))
第三种,这种方法不常见

var a = document.querySelector('.a');

function Student(el) {
  el.addEventListener('click', this, false);
}
Student.prototype.handleEvent = function(e) {
  switch (e.type) {
    case 'click':
     aa();
    break;
    default:
    break;
  }
};
var b = new Student(a);

function aa() {
alert(1);
}

 

转载于:https://www.cnblogs.com/smallfishzzy/p/7923329.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值