小工具代码:
(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。我应该如何编写代码来存储特定于实例的数据?
答案 0 :(得分:1)
this
上下文中的 var widget = this
是插件对象,而不是插件初始化的元素。
此:
alert(widget.data("name"));
应该是:
alert(widget.element.data("name"));
编辑:我不知道ajaxUtils
对象及其成功方法发生了什么,是否返回了$.post
成功调用的函数?