2009-09-21 3 views
2

(функция ($) {функция JQuery не возвращает

$.a.b = { 

     title: "ABC", 

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

       } 




    }; 

})(jQuery); 

Когда я пытаюсь вызвать $ .abinit («т»), она не работает, я имею в виду, что не возвращается, как и ожидалось Любой. предложения?

проблема заключается не в том, что $ .abinit («т») не работает. проблема заключается в том, что она возвращает код целой функции вместо возврата сказать строку.

Спасибо для вашего времени.

+0

код, как опубликованные работы хорошо, кроме '$ .ab' вещи: HTTP: // jsbin .com/eqaji /. Как правило, вы получите источник функции, если вы ее не запустили, например. 'alert ($. a.b.init);', а не 'alert ($. a.b.init ('parameter'));', поэтому я не могу думать об этом без кода. – Kobi

ответ

7

попробовать

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

или даже лучше:

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

При использовании $.a.b а является неопределенным, так что вы не можете добавить к нему.

+2

также установите firebug, чтобы вы могли видеть эти ошибки. –

+1

@ Ramblingwood - бесценный инструмент. Но даже консоль ошибок может помочь здесь: Ctrl + Shift + J в Firefox. – Kobi

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

Смежные вопросы