我是一个jquery插件,我正在使用这个样板jqueryboilerplate,我的插件是指textarea,我正在调用这样的按键事件
init: function(){
$(this.element).keypress(function(){
alert('hey');
});
},
所以这个警报工作正常,所以在按键内部他看不到我的本地方法。
init: function(){
$(this.element).keypress(function(){
this.sayHey();
});
},
sayHey:function(){
alert('hey');
}
答案 0 :(得分:1)
另一种解决方案是使用$.proxy将自定义上下文传递给事件回调函数
init: function(){
$(this.element).keypress($.proxy(function(){
this.sayHey();
}, this));
},
sayHey:function(){
alert('hey');
}
或者更好的是,不需要在这里创建匿名函数
init: function(){
$(this.element).keypress($.proxy(this.sayHey, this));
},
sayHey:function(){
alert('hey');
}
答案 1 :(得分:0)
在按键回调中,this
的值不再引用您的插件对象。尝试使用that
这样的技巧:
init: function(){
var that = this;
$(this.element).keypress(function(){
that.sayHey();
});
},
sayHey:function(){
alert('hey');
}