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 元素存在后找到另一种方式来运行您的代码。另一种方法是把你的 script 标签移到 body 标签的底部,这样 DOM 元素在运行时就可以存在。

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