事件处理程序返回未定义?
假设我将 jQuery 单击事件的事件处理程序附加到我的对象的函数之一。但为什么它在我的属性上返回未定义?
var buttonView = {
label : 'underscore',
onClick : function(){ alert('clicked: ' + this.label); },
};
$('#bind').bind('click', buttonView.onClick); //clicked: undefined --> why is it undefined ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在下面的 onclick 处理程序中,它指向 id 为“bind”的 dom 元素,并且它没有 label 属性。如果您有任何自定义属性作为标签,您应该使用 $(this).attr("label") 来检索它。试试这个
In the below onclick handler this points to dom element with id "bind" and it do not have a label property. If you have any custom attribute as label you should use $(this).attr("label") to retreieve it. Try this
您正在传递
buttonView.onClick
引用的函数,但它与buttonView
的关联未保留。要通过
this
保留引用,您可以使用jQuery.proxy ()
[文档] 方法。现在,
onClick
函数中的this
将引用您的buttonView
对象。实例: http://jsfiddle.net/K72qs/
或者简单地制作一个在
onClick
函数中显式引用buttonView
:实例: http://jsfiddle.net/K72qs/1/
You're passing the function referenced by
buttonView.onClick
, but it's association withbuttonView
is not retained.To retain the reference via
this
, you can use thejQuery.proxy()
[docs] method.Now
this
in theonClick
function will refer to yourbuttonView
object.Live example: http://jsfiddle.net/K72qs/
Or simply make an explicit reference to
buttonView
in theonClick
function:Live example: http://jsfiddle.net/K72qs/1/
你可以只使用:
You could just use: