【问题标题】:why $(window).load() is not working in jQuery?为什么 $(window).load() 在 jQuery 中不起作用?
【发布时间】:2016-07-29 04:01:30
【问题描述】:

我正在使用 Visual Studio 学习 jQuery,并在 Chrome 浏览器中测试我的代码。这是我的 HTML 代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="jquery-3.1.0.js"></script>

    <script type="text/javascript">
        $(window).load(function () {
            alert("Window Loaded");
        });
    </script>
</head>
<body>

</body>
</html>

这是我的解决方案浏览器

现在为什么我的浏览器没有提示“窗口已加载”?

【问题讨论】:

  • 是的,因为 $(document).ready() 正在工作。
  • windows load 几乎不用为什么不用document ready语句?
  • 从我看到的 1.8 弃用的文档中你有版本 3
  • 我不知道,全新的,跟着教程,是回溯了吗?
  • 回溯是什么意思?

标签: jquery


【解决方案1】:

您使用的是 jQuery 版本 3.1.0,并且自 jQuery 版本 1.8 起不推荐使用 load 事件。加载事件从jQuery 3.0 中删除。相反,您可以使用 on 方法并绑定 JavaScript load event

 $(window).on('load', function () {
      alert("Window Loaded");
 });

【讨论】:

    【解决方案2】:

    简而言之,第一个答案是正确的:

    $(window).on('load', function () {
      alert("Window Loaded.");
    });
    

    我必须单独写一个完整的答案,因为很难在第二个答案中添加这么长的评论。

    我很抱歉这么说,但上面的第二个答案不正确。

    以下三个场景将说明我的观点:

    场景1:在以下方式被弃用之前,

      $(window).load(function () {
         alert("Window Loaded.");
      });
    

    如果我们执行以下两个查询:

    <script>
       $(window).load(function () {
         alert("Window Loaded.");
       }); 
     
       $(document).ready(function() {
         alert("Dom Loaded.");
       });
    </script>,
    

    第二个查询中的警报(Dom Loaded.)将首先显示,而第一个查询中的警报(Window Loaded.)将稍后显示,这是应该的方式。

    场景 2: 但是如果我们像上面第二个答案所暗示的那样执行以下两个查询:

    <script>
       $(window).ready(function () {
         alert("Window Loaded.");
       }); 
     
       $(document).ready(function() {
         alert("Dom Loaded.");
       });
    </script>,
    

    第一个查询中的警报(Window Loaded.)将首先显示,第二个查询中的警报(Dom Loaded.)将稍后显示,这是不对的。

    场景3:另一方面,如果我们执行以下两个查询,我们会得到正确的结果:

    <script>
       $(window).on("load", function () {
         alert("Window Loaded.");
       }); 
     
       $(document).ready(function() {
         alert("Dom Loaded.");
       });
    </script>,
    

    也就是说,第二个查询中的警报(Dom Loaded.)将首先显示,第一个查询中的警报(Window Loaded.)将在后面显示,即正确结果。

    这就是为什么第一个答案是正确的:

    $(window).on('load', function () {
      alert("Window Loaded.");
    });
    

    【讨论】:

      【解决方案3】:
      <script type="text/javascript">
         $(window).ready(function () {
            alert("Window Loaded");
         });
      </script>
      

      【讨论】:

      • 其实这相当于$(document).ready(),见deprecation in jQuery 3的注释:“选择对.ready()方法的行为没有影响”。
      • 这不等同于 $(window).load
      • 有什么区别?
      • 虽然这看起来不错,但它不能正常工作。我在下面写了答案。
      • 是的,威廉的回答更好。
      【解决方案4】:

      在 jquery-3.1.1 中

      $("#id").load(function(){
      //code goes here});

      将无法工作,因为加载功能不再起作用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多