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

时间:2012-01-28 22:09:38

标签: javascript jquery jquery-plugins binding jquery-widgets

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小部件中传递此值的正确方法是什么?

1 个答案:

答案 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} }}