จะทำรหัส jquery หลังจากโหลดหน้าได้อย่างไร?


88

หากคุณต้องการให้เหตุการณ์ทำงานบนเพจของคุณคุณควรเรียกใช้ในฟังก์ชัน $ (document) .ready () ทุกอย่างที่อยู่ภายในจะโหลดทันทีที่โหลด DOM และก่อน ที่เนื้อหาของหน้าจะโหลด

ฉันต้องการทำโค้ดจาวาสคริปต์หลังจากโหลดเนื้อหาของหน้าแล้วเท่านั้นจะทำได้อย่างไร?

คำตอบ:


174

ใช้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 () {// code here}); .. เนื่องจาก ".load" เลิกใช้งานแล้ว
trapper_hag

ใช้. บน () มันชัดเจนมาก .. แต่ฉันใช้เวลา 1 ชม. เคาะหัวกับกำแพงก่อนจะพบสิ่งนี้ .. ขอบคุณ ..
ghuroo

3
ดูจากการผิดพลาดของการพยายาม$(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

21

ไม่มีใครพูดถึงเรื่องนี้

$(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 เหตุการณ์การโหลดถูกลบออกจาก jQuery 3.0 คุณสามารถใช้วิธีการและผูกเหตุการณ์การโหลด JavaScript:

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


5

เขียนโค้ดที่คุณต้องการให้ดำเนินการภายในนี้ เมื่อเอกสารของคุณพร้อมสิ่งนี้จะถูกดำเนินการ

$(document).ready(function() { 

});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.