我正在嘗試構建一個通用的ajax加載器,而ajax運行的是帶有動畫「加載」gif的燈箱將會顯示。Javascript範圍問題
我有一些問題的範圍。
的代碼是:
var t=setTimeout("s.d.dialog('destroy')" ,(s.o.msgTime*1000));
的錯誤是:"Uncaught ReferenceError: s is not defined"
;(function ($) {
$.loader = function (data, options) {
return $.loader.impl.init(data, options);
};
$.loader.close = function (data) {
$.loader.impl.close(data);
};
$.loader.create = function() {
$.loader.impl.create();
};
$.loader.defaults = {
appendTo: 'body',
autoCreate: true,
msgTime: 5,
};
$.loader.impl = {
d: {},
init: function(data, options){
var s = this;
s.o = $.extend({}, $.loader.defaults, options);
if ((typeof data === 'object')&&!(data instanceof jQuery)&&data.url) {
data.success = function(data, textStatus, jqXHR){ $.loader.close(); }
data.error = function(jqXHR, textStatus, errorThrown){ $.loader.close('Error accessing server'); }
$.ajax(data);
}else if(s.o.autoCreate){
s.create();
}
return s;
},
create: function() {
var s = this;
s.d = $('<div id="dialog" style="display:hidden"><span style="width: 100%" id="loading_diag"><center><img src="http://www.mydomain.com/images/ajax-loader.gif" /></center></span></div>').appendTo(s.o.appendTo);
s.d.dialog({ title: 'Loading ...', dialogClass: 'noTitleStuff', modal: true, draggable: false, resizable: false });
},
close: function(data)
{
var s = this;
//alert(typeof s.d);
if ((typeof data === 'string')&&data) {
$("#loading_diag").hide();
$("#dialog").html(data);
var t=setTimeout("s.d.dialog('destroy')" ,(s.o.msgTime*1000));
}else{
s.d.dialog("destroy");
}
s.d= {};
},
};
})(jQuery);
如果有人知道如何解決它,請分享。
第一和第二的解決方案做了一些事,但還沒有完全固定的,現在 我得到一個不同的錯誤:「遺漏的類型錯誤:對象#有沒有方法‘對話框’$ .loader.impl.close.sd」
第一個答案固定的一件事,但我得到另一位說:「遺漏的類型錯誤:對象#
@user什麼是」對話框「,它在哪裏定義? – 2011-04-17 17:52:27