0

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

是否有更好的方法在单击按钮时调用 doSend?

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

谢谢指教!

4

2 回答 2

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/

于 2012-06-01T01:15:47.793 回答
0

这个周末我终于完成了我的插件:http ://agrimarket-blacksea.com/jsc/jquery-mail.js

我决定以经典的方式调用“类函数”:$(this).mail('doSend'),直到我找到更好的东西。

谢谢!

于 2012-06-04T09:33:58.940 回答