2009-09-21 107 views
2

(函数($){jQuery函数没有返回

$.a.b = { 

     title: "ABC", 

     init: function (id) { 
       /* do something here */ 
        return id+'a'; 

       } 




    }; 

})(jQuery); 

当我尝试调用$ .abinit( 'T');这是行不通的,我的意思是它不会返回预期的任何。建议?

的问题不在于$ .abinit(“T”)是行不通的。问题是,它返回整个函数的代码,而不是返回说一个字符串。

谢谢为你的时间。

+0

代码张贴效果很好,除了'$ .ab'件事:HTTP:// jsbin .com/eqaji /。通常,如果你不启动它,你会得到函数的源代码,例如'alert($。a.b.init);'而不是'alert($。a.b.init('parameter'));',所以没有更多的代码就没有更多的东西可以想象。 – Kobi 2009-09-21 16:34:35

回答

7

尝试

$.a = []; 
$.a.b = { ... } 

甚至更​​好:

$.a = {b: { 
    title: "", 
    init: ... 
}}; 

当使用$.a.b一个是不确定的,所以你不能添加到它。

+2

也,安装萤火虫,所以你可以看到这些错误。 – 2009-09-21 11:26:08

+1

@Ramblingwood - 非常宝贵的工具。但即使错误控制台可以在这里帮助:Firefox上的Ctrl + Shift + J。 – Kobi 2009-09-21 11:27:45

4

由于$.a没有定义,你不能设置b财产。首先,您需要创建$.a。另外,使用一个命名空间帮手:

$.namespace = function(ns) { 
    var cur = $, split = ns.split('.'); 
    while (split[0]) { 
     cur = cur[split.shift()] = {}; 
    } 
    return cur; 
}; 

$.namespace('a').b = { ... }; 

它也可以用更深的命名空间中使用:

$.namespace('a.b.c.d.e.f').g = 123; 
$.a.b.c.d.e.f.g; // => 123 
+0

有趣和奇怪。我想如果你使用了很多,你可以为所有对象添加它,而不仅仅是jQuery。 – Kobi 2009-09-21 11:55:57