使用 jQuery 显示模块模式不起作用

发布于 2024-12-18 15:53:31 字数 648 浏览 2 评论 0原文

我一直在玩弄揭示模块的模式。我最初开始使用单例模式,但通过阅读模块模式似乎是更好的选择。

所以我测试了以下内容:

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 的情况下让它工作?

I've been playing around with the revealing module patter. I originally started using the Singleton pattern but from reading around the module pattern seems to be the better option.

So i've tested the following:

var test = (function() {

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

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

and this works fine when calling

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

However, i want to use jQuery so i tried:

var test = (function($) {

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

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

but this doesn't work. It does work when using:

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

How can i get it to work without the added jQuery when calling it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温暖的光 2024-12-25 15:53:31

通常,任何涉及 DOM 的操作都需要在 $(document).ready(fn) 回调中完成。 $(fn) 是此操作的快捷方式。

所以它不起作用的原因是你正在搜索尚不存在的 DOM 元素。所以你有两个选择。您必须使用 $() 包装器,或者找到另一种方法仅在 DOM 元素存在后运行代码。另一种方法是将 script 标签移到 body 标签的底部,以便 DOM 元素在运行时可以存在。

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

Usually, anything that touches the DOM needs to done in the $(document).ready(fn) callback. $(fn) is a shortcut for this.

So the reason it doesn't work is because you are searching for DOM elements that don't exist yet. So you have 2 choices. Either you must use the $() wrapper, or find another way to run your code only after the DOM elements exist. Another way to do this is to move your script tag the bottom of the body tag so that the DOM elements can exist when it's ran.

<body>
  <!-- your page elements here -->
  <script>test.init();</script>
</body>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文