首页 > web前端 > js教程 > 如何在事件处理程序中正确使用 jQuery 的 $(this) 和 ES6 箭头函数?

如何在事件处理程序中正确使用 jQuery 的 $(this) 和 ES6 箭头函数?

Mary-Kate Olsen
发布: 2024-12-14 06:15:12
原创
378 人浏览过

How to Correctly Use jQuery's $(this) with ES6 Arrow Functions in Event Handlers?

将 jQuery $(this) 与 ES6 箭头函数(词法 this 绑定)结合使用

使用 ES6 箭头函数绑定事件处理程序可能会出现问题使用 jQuery 的 $(this) 选择器。这是因为箭头函数在词法上绑定了 this 关键字,这可能不是 jQuery 回调中所需的行为。

以下示例说明了该问题:

class Game {
  foo() {
    this._pads.on('click', () => {
      if (this.go) { $(this).addClass('active'); }
    });
  }
}
登录后复制

在上面的示例中,使用单击事件处理程序的箭头函数会导致 $(this) 引用 Game 实例而不是单击的元素。这是因为箭头函数没有自己的 this 绑定,因此它们从周围的作用域继承它。

解决方案

要解决此问题,请避免使用箭头函数绑定 jQuery 事件处理程序时。相反,使用传统的函数声明或使用 bind 方法显式绑定 this 关键字:

class Game {
  foo() {
    this._pads.on('click', function() {
      if (this.go) { $(this).addClass('active'); }
    }.bind(this));
  }
}
登录后复制

或者,您可以使用 event.currentTarget 访问单击的元素:

class Game {
  foo() {
    this._pads.on('click', (event) => {
      if (this.go) { $(event.currentTarget).addClass('active'); }
    });
  }
}
登录后复制

使用事件.currentTarget 提供对触发事件的元素的访问,无论回调函数的绑定上下文如何。

以上是如何在事件处理程序中正确使用 jQuery 的 $(this) 和 ES6 箭头函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板