我正试图在按下按钮的方法中访问'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还是有更好的方法吗?
答案 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);
}