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成功调用中的widget变量总是返回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 回答