Javascript 如何从事件内部访问小部件选项?

Javascript 如何从事件内部访问小部件选项?,javascript,jquery,jquery-plugins,binding,jquery-widgets,Javascript,Jquery,Jquery Plugins,Binding,Jquery Widgets,现在,我编写的选项对象的方式没有在showPoint中定义 事件处理程序。在jQuery小部件中传递此值的正确方法是什么?它与调用showPoint函数的上下文有关。在本例中,您已经将该函数指定给jQuery事件处理程序,这将导致jQuery在event.target元素的上下文中调用该函数。您可以使用以下代码覆盖此内容: jQuery.widget("ui.test",{ _init: function(){ $(this.element).click(this.sho

现在,我编写的
选项
对象的方式没有在showPoint中定义

事件处理程序。在jQuery小部件中传递此值的正确方法是什么?

它与调用
showPoint
函数的上下文有关。在本例中,您已经将该函数指定给jQuery事件处理程序,这将导致jQuery在event.target元素的上下文中调用该函数。您可以使用以下代码覆盖此内容:

jQuery.widget("ui.test",{
    _init: function(){
        $(this.element).click(this.showPoint);
    },

    showPoint: function(E){
        E.stopPropagation();
        alert(this.options.dir);
    }
}

$('#someEleme').test();

请注意,这将覆盖showPoint函数中的
this
变量,因此您不能再使用类似
$(this.hide()
)的内容,您必须使用
$(E.target).hide()
或实际上
$(this.element).hide()

,据我所知,在编写小部件和排序时,这是一种方法。通常,小部件接口以类似
.click(this.proxy(this.myClickhandler))
的形式提供自己的代理方法,但它基本上做了相同的事情。一些使用代理函数的javscript/jQuery MVC框架示例如下:。根据我的经验,可以说这确实是一种常见的方法。
jQuery.widget("ui.test",{
    _init: function(){
        $(this.element).click($.proxy(this.showPoint, this));
    },

    showPoint: function(E){
        E.stopPropagation();
        alert(this.options.dir);
    }
}