为什么$(window).load()在jQuery中不起作用?

Sha*_*hid 41 jquery

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

这是我的解决方案资源管理器

Solution Explorer

为什么我的浏览器不警告"窗口加载"?

Bho*_*yar 126

您正在使用jQuery版本3.1.0,并且自jQuery版本1.8以来不推荐使用load事件.load事件从jQuery 3.0中删除.相反,您可以使用on方法并绑定JavaScript load事件:

 $(window).on('load', function () {
      alert("Window Loaded");
 });
Run Code Online (Sandbox Code Playgroud)


Wil*_*Hou 6

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

$(window).on('load', function () {
  alert("Window Loaded.");
});
Run Code Online (Sandbox Code Playgroud)

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

我很抱歉这么说,但上面的第二个答案不起作用。

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

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

  $(window).load(function () {
     alert("Window Loaded.");
  });
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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

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

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

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

$(window).on('load', function () {
  alert("Window Loaded.");
});
Run Code Online (Sandbox Code Playgroud)