假设我将jquery click事件的事件处理程序附加到对象的功能之一。但是,为什么它在我的属性上返回未定义?
var buttonView = {
label : 'underscore',
onClick : function(){ alert('clicked: ' + this.label); },
};
$('#bind').bind('click', buttonView.onClick); //clicked: undefined --> why is it undefined ?
最佳答案
您正在传递buttonView.onClick
引用的函数,但未保留与buttonView
的关联。
要通过this
保留引用,可以使用 jQuery.proxy()
方法。
$('#bind').bind('click', $.proxy(buttonView,'onClick'));
现在,
this
函数中的onClick
将引用您的buttonView
对象。实时示例: http://jsfiddle.net/K72qs/
或者简单地在
buttonView
函数中明确引用onClick
:onClick : function(){ alert('clicked: ' + buttonView.label); },
实时示例: http://jsfiddle.net/K72qs/1/