2

ドキュメントに従ってUIダイアログを拡張しようとしました(UIバージョン1.8.16):

(function($) {
    $.widget('ui.mydialog', $.extend(true, $.ui.dialog.prototype, {
        _create: function() {
            return $.Widget.prototype._create.apply(this, arguments);
        }
    }));
})(jQuery);

$(function() {
    $('div#dialog').mydialog();
});

このコードを実行すると、「this.uiDialog is undefined」という JS エラーが発生します。

_init() メソッドをオーバーライドしようとしても、エラーは発生しませんが、親メソッドの呼び出しは効果がありません。

私は混乱しています..カスタムの初期化コードを入れるなど、どの方法で拡張するのが合法ですか?

4

3 に答える 3

6

この投稿があなたの質問を解決すると思います: Inherit from jQuery UI dialog and call overridden method .

つまり、jQuery UI ダイアログを継承するウィジェットを作成したい場合は、次のようにします。

(function($) {
    $.widget("ui.mydialog", $.ui.dialog, {
        _create: function() {
            $.ui.dialog.prototype._create.call(this);
        }
    });

})(jQuery);

これを実際に見てください: http://jsfiddle.net/william/RELxP/


このチュートリアルはあなたを啓発します: http://wiki.jqueryui.com/w/page/12138135/Widget%20factory . つまり$.Widget、ベース ウィジェット オブジェクトです。関数はあり_createますが、デフォルトでは何もせず、初期化コードはサブクラスに任せます。この更新された例を見てみましょう: http://jsfiddle.net/william/RELxP/1

于 2011-09-17T23:42:43.840 に答える
1

ウィジェットファクトリを使用してjQueryUIダイアログを拡張する簡単な例を投稿しました。

http://jsfiddle.net/Artistan/jWUGZ/

この例では、ダイアログを拡張して、単純なロードモーダルを作成します。

于 2012-08-17T15:40:24.330 に答える