不支持命名空间一直是JS开发里比较严重的问题。不过大家想出了各种手段来绕过这个坎,比如YUI的namespace。可惜的是jQuery尚未提供一个合适的解决方案,不过这并不难,可以人肉给它添加这个方法。稍加搜索,找到两个地址介绍此方法,附在最后。
先上代码:
- // 把生成命名空间的方法绑定在jQuery上
- jQuery.namespace = function() {
- var a=arguments, o=null, i, j, d;
- for (i=0; i<a.length; i=i+1) {
- d=a[i].split(".");
- o=window;
- for (j=0; j<d.length; j=j+1) {
- o[d[j]]=o[d[j]] || {};
- o=o[d[j]];
- }
- }
- return o;
- };
- // 接着就可以使用此方法来定义命名空间了
- jQuery.namespace( 'jQuery.debug' );
- jQuery.debug.test1 = function()
- {
- alert( 'test1 function' );
- };
- jQuery.debug.test2 = function()
- {
- alert( 'test2 function' );
- };
- // usage
- jQuery.debug.test1();
- jQuery.debug.test2();
将上面这段js保存成jQuery.namespace.js,放在和jQuery一个目录里,以后写项目的时候就可以随时用到了。