首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >控制jQuery事件中的“this”的值

控制jQuery事件中的“this”的值
EN

Stack Overflow用户
提问于 2009-02-06 11:46:44
回答 8查看 69.8K关注 0票数 74

我已经使用jQuery创建了一个“控件”,并使用jQuery.extend来帮助它尽可能地成为面向对象的。

在我的控件初始化期间,我连接了各种单击事件,如下所示

代码语言:javascript
复制
jQuery('#available input', 
            this.controlDiv).bind('click', this, this.availableCategoryClick);

请注意,我将'this‘作为绑定方法中的数据参数进行传递。我这样做是为了获得附加到控件实例的数据,而不是从激发单击事件的元素中获取数据。

这很好用,但我怀疑还有更好的方法

我以前使用过Prototype,我记得有一个绑定语法,它允许你控制'this‘在事件中的值是什么。

什么是jQuery方式?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-04-20 15:53:55

你可以将上下文与匿名函数一起使用,只是有一点尴尬,因为‘jQuery.proxy()’是第二个参数。

代码语言:javascript
复制
 $("#button").click($.proxy(function () {
     //use original 'this'
 },this));
票数 104
EN

Stack Overflow用户

发布于 2009-12-31 06:50:24

我喜欢你的方式,实际上使用了类似的结构:

代码语言:javascript
复制
$('#available_input').bind('click', {self:this}, this.onClick);

This.onClick的第一行:

代码语言:javascript
复制
var self = event.data.self;

我喜欢这种方式,因为这样就可以在不使用闭包的情况下将元素和" this“对象都作为self进行单击(如下所示)。

票数 39
EN

Stack Overflow用户

发布于 2011-02-14 19:32:46

jQuery具有jQuery.proxy方法(从1.4开始可用)。

示例:

代码语言:javascript
复制
var Foo = {
  name: "foo",

  test: function() {
    alert(this.name)
  }
}

$("#test").click($.proxy(Foo.test, Foo))
// "foo" alerted
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/520019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档