2009-09-21 145 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