jQuery.widget("ui.test",{
_init: function(){
$(this.element).click(this.showPoint);
},
showPoint: function(E){
E.stopPropagation();
alert(this.options.dir);
}
}
$('#someEleme').test();
现在,我写的options
对象的方式没有在showPoint中定义
事件处理程序在jQuery小部件中传递此值的正确方法是什么?
答案 0 :(得分:1)
关于调用showPoint
函数的上下文。在您的情况下,您已将该函数提供给jQuery事件处理程序,这会导致jQuery在event.target元素的上下文中调用该函数。您可以使用jQuery.proxy()
覆盖此内容,在您的代码中看起来像这样:
jQuery.widget("ui.test",{
_init: function(){
$(this.element).click($.proxy(this.showPoint, this));
},
showPoint: function(E){
E.stopPropagation();
alert(this.options.dir);
}
}
请注意,这会覆盖showPoint函数中的this
变量,因此您无法再使用$(this).hide()
之类的内容,您必须使用$(E.target).hide()
或实际{{1} }}