因项目开发需要,须将每一个方法都独立成单独的js文件以便载入、维护,所以,必须需要有一个控制器用于载入这些方法。
我的思路是,在编写独立模块的时候,注意将这些方法集成到$.tools对象中,接下来,在页面中,调用控制器载入模块,并在载入完成后判断$.tools中对象的个数与预定义载入的模块数是否相等,如不等继续等待,如相等执行回调函数。
/* * LOADScript Mod * Params url1,url2,url3,url4,fn */ jQuery.extend({ loadMod: function(){ var argleng = arguments.length, arglast = arguments[argleng-1], fn = false, queue = [], checknum = 0, timer = null ; // init if(jQuery.isFunction(arglast)){argleng = argleng -1;fn=arglast;} for (var i=0;i<argleng ;i++){ queue.push(arguments[i]); } // getscript jQuery.each(queue,function(i,o){ jQuery.getScript(o); }); // check load ready? loadReady(); function loadReady(){ if(jQuery.tools != undefined){ checknum = 0; $.each(jQuery.tools,function(i,n){ if(jQuery.isPlainObject(n)){checknum++;} }); } if(checknum != argleng){ clearTimeout(timer); timer = setTimeout(loadReady, 100); }else{ if(!!fn){fn.call(document.jQuery)} } } } }); // 使用方法 $.loadMod('a.js','b.js','c.js',function(){ alert('success!'); });
