JavaScript-我的事件处理程序出了什么问题?
作者:互联网
假设我将jquery click事件的事件处理程序附加到对象的功能之一.但是,为什么它在我的属性上返回undefined呢?
var buttonView = {
label : 'underscore',
onClick : function(){ alert('clicked: ' + this.label); },
};
$('#bind').bind('click', buttonView.onClick); //clicked: undefined --> why is it undefined ?
解决方法:
您正在传递buttonView.onClick引用的函数,但未保留与buttonView的关联.
要通过此方法保留参考,可以使用jQuery.proxy()
[docs]方法.
$('#bind').bind('click', $.proxy(buttonView,'onClick'));
现在,此onClick函数中将引用您的buttonView对象.
实时示例:http://jsfiddle.net/K72qs/
或者简单地在onClick函数中对buttonView进行显式引用:
onClick : function(){ alert('clicked: ' + buttonView.label); },
实时示例:http://jsfiddle.net/K72qs/1/
标签:dom,javascript-events,html,javascript,jquery 来源: https://codeday.me/bug/20191208/2089177.html