绑定这个的正确方法?

时间:2014-07-15 15:52:42

标签: javascript jquery

我正试图在按下按钮的方法中访问'this',这里指的是按下的类和按钮:

p.myVar = 'banana';

$('.go').on('click', this._init);

p._init = function(e){
    //get the button pressed
    //get this.myVar
};

要做到这一点,我绑定它:

$('.go').on('click', this._init.bind(this));

上述工作现在我可以通过以下方式访问我的var:

this.myVar; //banana

但我无法再访问该按钮了。

如何访问它,使用e.currentTarget还是有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您应该使用data参数:

$('.go').on('click', {myVar:'banana'}, this._init);

p._init = function(e){
    // use e.data.myVar;
    // this is the right matching clicked element
};

答案 1 :(得分:0)

我假设你在闭包中声明事件监听器,如果是这样你可以使用局部变量并传递它,该引用对于闭包是唯一的,并且在调用时可以由监听器中的函数访问。它变成了一种不可见的全局,引用只存在于特定的调用和监听器函数中,但仍然是共享的。

function initButtons(){
var selfRef = this;
$('.go').on('click',selfRef._init);
}