Javascript范围界定问题
|
我正在尝试构建通用的Ajax加载器,而ajax正在运行带有动画“加载” gif的灯箱。
我在范围界定方面有一些问题。
代码是:
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);
如果有人知道如何解决,请分享。
第一个和第二个解决方案做了一些事情,但还没有完全解决它,
现在我遇到了另一个错误:\“未捕获的TypeError:对象#没有方法\'dialog \'$ .loader.impl.close.s.d \”
没有找到相关结果
已邀请:
2 个回复
伞腹
当您将字符串传递给
时,该字符串(代码)将在全局代码中执行-并且由于
是局部变量,因此它的确不在全局代码中定义。
炉挤仙挟