1

私は明らかにモジュールのパターンをいじっています。私はもともとシングルトンパターンを使い始めましたが、モジュールパターンを読んだ方が良い選択肢のようです。

だから私は以下をテストしました:

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を追加せずに動作させるにはどうすればよいですか?

4

1 に答える 1

4

通常、DOM に関係することはすべて$(document).ready(fn)コールバックで行う必要があります。 $(fn)このためのショートカットです。

うまくいかないのは、まだ存在しない DOM 要素を探しているからです。したがって、2 つの選択肢があります。ラッパーを使用するか$()、DOM 要素が存在した後でのみコードを実行する別の方法を見つける必要があります。これを行うもう 1 つの方法は、実行時に DOM 要素が存在できるように、script タグを body タグの下部に移動することです。

<body>
  <!-- your page elements here -->
  <script>test.init();</script>
</body>
于 2011-12-01T00:05:19.500 に答える