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小部件中传递此值的正确方法是什么?
它是关于调用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()
或实际上$(this.element).hide()
。