页面加载后如何执行jQuery代码?


85

如果希望事件在页面上运行,则应在$(document).ready()函数内调用该事件。DOM加载后以及 页面内容加载之前,其中的所有内容都将加载。

我只想在页面内容加载执行javascript代码该怎么办?

Answers:


168

使用load代替ready

$(document).load(function () {
 // code here
});

更新.on()从jQuery 1.8开始, 您需要使用。(http://api.jquery.com/on/

$(window).on('load', function() {
 // code here
});

这个答案

根据http://blog.jquery.com/2016/06/09/jquery-3-0-final-released/

删除了不推荐使用的事件别名

.load.unload.error,因为jQuery的1.8过时,没有更多的。使用.on()注册听众。

https://github.com/jquery/jquery/issues/2286


1
从对此答案的评论:stackoverflow.com/a/37817516/957246 $(window).on(“ load”,function(){//这里的代码}); ..因为“ .load”已弃用。
trapper_hag

使用.on()是如此明显..但是我花了1小时将头撞到墙上才找到它..谢谢..!
ghuroo

2
当心尝试该错误的$(document).on('load', ...必要性$(window).on('load',...
用户

29

以下

$(document).ready(function() { 
});

可以更换

$(window).bind("load", function() { 
     // insert your code here 
});

我使用了另一种方法来增加页面加载时间。

$(document).ready(function() { 
  $(window).load(function() { 
     //insert all your ajax callback code here. 
     //Which will run only after page is fully loaded in background.
  });
});

2
准备处理程序中的负载处理程序?太疯狂了,因为窗口确实存在,所以不需要准备文档,您可以在没有它的情况下附加处理程序。
dalore

18

没有人提到这个

$(function() {
    // place your code
});

这是...的简写功能

$(document).ready(function() { .. });

16

编辑:此代码将等待,直到所有内容(图像和脚本)都已完全加载并在浏览器中呈现为止。

我遇到了这个问题,$(window).on('load',function(){ ... })因为我使用的Javascript是用于格式化目的和隐藏元素的,因此对于我的代码执行起来太快了。元素隐藏得太早,而高度保留为0的元素。

我现在使用$(window).on('pageshow',function(){ //code here });它,并在需要时触发。


1
这对我也有帮助,我确实想在显示jQuery Mobile页面之后运行一些代码。谢谢。@Boyd Cyr
codedudey

只是想添加此代码与接受的答案相比有多大帮助。非常感谢。
Countzero

10

您可以这样避免在'$'中获得未定义

window.addEventListener("DOMContentLoaded", function(){
    // Your code
});

编辑:使用'DOMContentLoaded'比'加载'更快,因为加载等待页面已完全加载,包括imgs ...而DomContentLoaded仅等待结构


8

我正在寻找相同的问题,这对我有帮助。这是jQuery 3.1.0版,自jQuery 1.8版以来,不建议使用load事件。从jQuery 3.0中删除了load事件。相反,您可以使用on方法并绑定JavaScript load事件:

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.