编程语言
首页 > 编程语言> > JavaScript-我的事件处理程序出了什么问题?

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