美文网首页
JS事件处理程序中的this

JS事件处理程序中的this

作者: shirleyyu001 | 来源:发表于2017-01-01 22:27 被阅读0次

使用DOM0级方法指定的事件处理程序被认为是元素的方法。因此,这时候的事件处理程序是在元素的作用域中运行;换句话说,程序中的this引用当前元素。来看一个例子:

var btn=document.getElementById('myBtn');
btn.onclick=function(){
    alert(this.id);  //"myBtn"
}

在事件处理程序内部,对象this始终等于currentTarget的值,而target则只包含事件的实际目标。如果直接将事件处理程序指定给了目标元素,则this、currentTarget和target包含相同的值。来看一个例子:

var btn=document.getElementById('myBtn');
btn.onclick=function(event){
    alert(event.currentTarget===this);  //true
    alert(event.target===this);  //true
}
备注
  • currentTarget:
    只读的Element类型。其事件处理程序当前 正在处理事件的那个元素。
  • target:
    只读的Element类型。事件的目标。

因此,若事件是冒泡到祖先元素上进行处理的,则this和currentTarget是事件被委托的元素。来看一个例子:

//html
<div id="delegateEle">
    <div id="targetEle">click</div>
</div>

//javascript
var dom=document.getElementById('delegateEle');
dom.addEventListener('click',function(e){
    //以下为单击targetEle元素时的结果
    console.log(this.id);  //"delegateEle"
    console.log(e.currentTarget.id);  //"delegateEle"
    console.log(e.target.id);  //"targetEle"
});
注:以上在IE8及以下版本中不适用。

相关文章

  • javascript 高级 -- jQuery-事件绑定

    事件的处理程序在js当中很重要的。事件驱动是js的重要组成部分。在js中,有html中处理程序,dom0级,dom...

  • js中的事件

    简单总结一下js中的事件 事件处理程序 事件委托 各种各样的事件总结 事件中的this指向 事件处理程序 直接在D...

  • 事件处理程序

    HTML事件处理程序 HTML程序和JS无法分离 DOM0级事件处理程序 DOM2级事件处理程序 DOM2级事件定...

  • JS事件处理程序中的this

    使用DOM0级方法指定的事件处理程序被认为是元素的方法。因此,这时候的事件处理程序是在元素的作用域中运行;换句话说...

  • js事件处理程序

    1、HTML事件处理程序2、DOM0级事件处理程序:先获取HTML元素,然后给元素添加事件属性如onlick属性,...

  • JS—事件处理程序

    简单理解事件是用户或浏览器自身执行的某种动作。诸如click、load而事件处理程序则是响应某个事件的函数。诸如o...

  • js 事件委托 事件代理

    js 事件委托 事件代理 JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序...

  • 事件委托

    (摘自js高级教程)对“事件处理程序过多”问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个事件处理程...

  • JS事件

    js事件编程 事件处理程序 常用事件 绑定事件方式 事件冒泡 默认行为 事件对象示例 1. 常用事件 onLoad...

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

网友评论

      本文标题:JS事件处理程序中的this

      本文链接:https://www.haomeiwen.com/subject/oygivttx.html