Выявление шаблона модуля с JQuery не работает - PullRequest
1 голос
/ 01 декабря 2011

Я играл с разоблачающим паттерном модуля.Первоначально я начал использовать шаблон Singleton, но лучше изучить шаблон модуля.

Итак, я проверил следующее:

var test = (function() {

var init = function () {
    alert('hello');
};

return {
    init: init
};
})();

, и это прекрасно работает при вызове

<script>test.init();</script>

Однако я хочу использовать jQuery, поэтому я попытался:

var test = (function($) {

var init = function () {
    $("#samplediv").html('test');
    alert('hello');
};

return {
    init: init
};
})(jQuery);

, но это не работает.Он работает при использовании:

<script>$(function() { test.init(); });</script>

Как я могу заставить его работать без добавления jQuery при его вызове?

1 Ответ

4 голосов
/ 01 декабря 2011

Обычно все, что касается DOM, необходимо сделать в обратном вызове $(document).ready(fn). $(fn) является сокращением для этого.

Так что причина этого не в том, что вы ищете элементы DOM, которые еще не существуют. Итак, у вас есть 2 варианта. Либо вы должны использовать оболочку $(), либо найти другой способ запуска кода только после существования элементов DOM. Еще один способ сделать это - переместить тег скрипта внизу тега body, чтобы элементы DOM могли существовать при его запуске.

<body>
  <!-- your page elements here -->
  <script>test.init();</script>
</body>
...