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


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()

相关内容

  • 没有找到相关文章

最新更新