0

ウィジェットコード:

    (function($){

        $.widget("demo.widget", {

            _create: function() {
            },

            _init: function() {
            },

            load: function(){
                var widget = this;
                $.post(
                    Url, 
                    ajaxUtils.success(function(json) {
                    //variable widget is overwritten here if I create multiple instances of the widget

                    alert(widget.element.data("name"));
                    }), "json");

            },

            setOptions: function(name) {
                $(this).data("name", name);
            }

    })(jQuery);

同じウィジェットの複数のインスタンスを作成します。

    $('<div/>').widget();
    $('<div/>').data('widget').setOptions("Name1");
    $('<div/>').data('widget').load();

    $('<div/>').widget();
    $('<div/>').data('widget').setOptions("Name2");
    $('<div/>').data('widget').load(); 

ただし、ajax成功呼び出しのウィジェット変数は常にName2を返します。インスタンス固有のデータを保存するコードをどのように書く必要がありますか?

4

1 に答える 1

1

thisのコンテキストでvar widget = thisは、プラグインが初期化された要素ではなく、プラグイン オブジェクトです。

これ:

alert(widget.data("name"));

次のようにする必要があります。

alert(widget.element.data("name"));

編集:オブジェクトとその成功メソッドで何が起こっているのかわかりません。成功ajaxUtils時に呼び出される関数を返しています$.postか?

于 2012-08-01T19:08:04.967 に答える