【问题标题】:jQuery $(window).on("load", function() only launches after refreshjQuery $(window).on("load", function() 仅在刷新后启动
【发布时间】:2022-01-19 21:17:31
【问题描述】:

我在 1.7.1 jQuery 上运行了一些脚本,现在我在 Wordpress 的 1.12.4 上运行。代码不会运行。我有两个错误运行:

未捕获的类型错误:$ 不是函数 https://grumas.ca/delicatessen/:1734

页面上的这一行是 $(window).load(function(){Grumans.deli.init();});

还有这个

未捕获的类型错误:$ 不是函数 https://grumas.ca/js/script.js:1162

$(window).load(function(){

     //Grumans.deli.init();
});

我找到了我认为的解决方案。有人发布了另一篇文章,您可以这样做。

jQuery(function($) {
    $(window).on("load", function() {
       Grumans.deli.init();
    });
});

这消除了应用于页面和脚本代码时的两个错误,并让我的代码运行,但前提是我刷新页面两次。当我第一次点击页面时,没有任何反应。我不是代码编写者。有谁知道为什么以及如何修复代码以使其在页面加载后立即运行?

【问题讨论】:

  • 最后一个例子是正确的——它在该代码块内应用了$ 别名。它在每个负载上运行,而不是像您描述的那样。我们在这里看不到的其他事情正在发生。这两个问题无关。

标签: javascript jquery wordpress


【解决方案1】:

如果不查看 html,很难确切知道在您的特定情况下发生了什么,但鉴于您提供的内容,这可能有效:


jQuery(window).load(function(){
    console.log('called on page load');
});

您的第一个示例不起作用的原因是$ 变量尚未附加到window 对象。看起来您确实可以访问 jQuery,这是 jQuery 附加到窗口的另一个全局变量,它是 $ 的别名。

【讨论】:

  • 要指出的另一件事是,您实际上并不需要 jQuery。您也可以轻松做到:document.addEventListener('load', function() { console.log('called on page load'); });
【解决方案2】:

您使用的 JQuery 版本没有像旧版本那样默认定义 $。如果您真的想要加载事件,您可以将$ 替换为JQuery,但通常 DOMReady 是一个更有用的事件。某些图像此时可能尚未完全下载,但您通常可以运行任何其他操作 DOM 的函数。

您输入的代码在 DOMReady 上运行,这意味着直到那时才安装 Load 处理程序,到那时可能为时已晚。

jQuery(function($) {
   Grumans.deli.init();
});

上述代码应该在每次页面加载时运行 Grumans 代码,但它会在 DOMReady 事件中运行。

【讨论】:

    猜你喜欢
    • 2019-11-19
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多