функция jQuery не возвращается - PullRequest
2 голосов
/ 21 сентября 2009

(функция ($) {

    $.a.b  = {

        title: "ABC",

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

              }




    };

})(jQuery);

Когда я пытаюсь вызвать $ .a.b.init ('t'); это не работает, я имею в виду, что это не возвращает, как ожидалось. Есть предложения?

Проблема не в том, что $ .a.b.init ('t') не работает. Проблема в том, что он возвращает код всей функции, а не возвращает, скажем, строку.

Спасибо, что уделили время.

Ответы [ 2 ]

7 голосов
/ 21 сентября 2009

1001 * попробовать *

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

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

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

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

4 голосов
/ 21 сентября 2009

Поскольку $.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...