0

JQuery UI (v 1.9 m8) でカスタム ウィジェットを作成しようとしています: http://pastebin.com/zua4HgjR 私のサイトからは次のように呼び出します: 基本的には機能します。

ボタンのクリック時に doSend を呼び出すより良い方法はありますか?

問題は、関数ハンドラからオブジェクト インスタンスにアクセスする方法です。「this」は、html ウィンドウ全体を返します。$.proxy で試しても動作しません: クリック: $.proxy(this.doSend, this);

アドバイスありがとう!

4

2 に答える 2

1

残念ながら、メンバーを使用してボタンを設定するoptionsと、 を呼び出すために必要な要素への参照がなくなりますdoSend。私が思いついた回避策の 1 つ_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 に答える