JQuery UI Widget继承/类方法调用

时间:2012-05-31 07:34:20

标签: jquery-ui jquery-ui-dialog jquery-ui-widget

我正在尝试在JQuery UI中编写自定义小部件(v 1.9 m8):http://pastebin.com/zua4HgjR 从我的网站我这样称呼:var D = new $ .ui.mail({});基本上它有效。

有没有更好的方法在按钮点击时调用doSend?

问题是如何从函数处理程序访问对象实例? “this”返回整个html窗口。 尝试使用$ .proxy不起作用:点击:$ .proxy(this.doSend,this);

感谢您的建议!

2 个答案:

答案 0 :(得分:1)

不幸的是,如果您使用options成员设置按钮,则不会引用您调用doSend所需的元素。我能想出的一个解决方法是在_create方法中分配处理程序,您可以在其中获得适当的引用。

_create: function() {
    this.options.buttons = [
        {
            text: 'Send',
            click: function(self) {
                return function() {
                    $(self.element).mail('doSend');
                };
            }(this)
        },
        {
            text: 'Cancel',
            click: function() { $(this).remove() }
        }
    ];                     
    this._super(arguments);
}

直播示例 - http://jsfiddle.net/hhscm/2/

答案 1 :(得分:0)

本周末花了我最后完成了我的插件:http://agrimarket-blacksea.com/jsc/jquery-mail.js

我决定以经典的方式称呼“课程功能”:$(this).mail('doSend'),直到我找到更好的东西。

谢谢!