jQuery - Які відмінності між завантаженням $ (document) .ready і $ (window)?


319

У чому полягають відмінності

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

і

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

І я хочу переконатися, що:

$(document).ready(function(){

}) 

і

$(function(){

}); 

і

jQuery(document).ready(function(){

});

однакові.

Чи можете ви сказати мені, які відмінності та схожість між ними?


11
можливий дублікат window.onload vs document.ready
Pranay Rana

1
lolz, він скопіював з мене те саме посилання (не згадуючи) і прийняв: P Урок засвоєний, не пояснюйте розробникам, вони люблять бачити код замість цього: D
Rifat

@Rifat Вибачте, але формат Oyeme легше читати> _ <
Hungneox

1
@eureka Це нормально. Вам не потрібно шкодувати :) Ми обоє намагалися вам допомогти. Але, він повинен був згадати кредит: Р
Ріфат

Відповіді:


432

$(document).ready(function() {
  // executes when HTML-Document is loaded and DOM is ready
  console.log("document is ready");
});


$(window).load(function() {
  // executes when complete page is fully loaded, including all frames, objects and images
  console.log("window is loaded");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Версія запиту 3.0

Порушення зміни: .load (), .unload () та .error () видалено

Ці методи - це ярлики для операцій з подіями, але мали кілька обмежень API. Метод події .load()суперечив .load() методу ajax . .error()Метод не може бути використаний з window.onerror через спосіб метод DOM визначено. Якщо вам потрібно приєднати події до цих імен, скористайтеся .on()методом, наприклад, змінити $("img").load(fn)на $(img).on("load", fn). 1

$(window).load(function() {});

Слід змінити на

$(window).on('load', function (e) {})

Всі вони рівноцінні:

$(function(){
}); 

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

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

$(document).on('ready', function(){
})


Останній є кращим, оскільки інші застарілі. Крім того, останній (я вважаю) спеціально дозволяє декілька обробників, так що ви можете мати декілька сценаріїв, усі мають обробник .on ("готовий" ...)
Еван Ланглуа

6
.on( "ready", handler )- застарілий станом на jQuery 1.8. дивіться api.jquery.com/ready
TeNNoX

Яка різниця між $(document).readyі $(document).load?
ренатов

$ (document) .ready - "виконується, коли HTML-документ завантажений і DOM готовий" - так він запуститься одразу після завантаження документа, не чекаючи завантаження зображень, а також кадрів, об'єктів або того, що ще не завантажено. . $ (document) .load - "виконується, коли повна сторінка повністю завантажена, включаючи всі кадри, об'єкти та зображення" - тому буде чекати ВСЯГО завантаження - документ, DOM, зображення, сценарії, кадри, об'єкти, що завгодно - і тоді і лише тоді він запуститься.
pazof

29

document.readyце подія jQuery, вона запускається, коли DOM готовий, наприклад, всі елементи є, щоб їх знайти / використовувати, але не обов'язково весь вміст.
window.onloadпожежі пізніше (або в той же час у найгірших / несправних випадках), коли завантажуються зображення та інше. Отже, якщо ви, наприклад, використовуєте параметри зображення, ви часто хочете використовувати це замість цього.

Читайте також відповідне запитання:
Різниця між функціями $ (window) .load () та $ (document) .ready ()


11

З документа API jQuery

Хоча JavaScript надає loadподії для виконання коду під час надання сторінки, ця подія не спрацьовує, поки всі активи, такі як зображення, не будуть повністю отримані. У більшості випадків сценарій можна запустити, як тільки ієрархія DOM буде повністю побудована. Переданий обробник .ready()гарантовано буде виконаний після того, як DOM буде готовий, тому зазвичай це найкраще місце для приєднання всіх інших обробників подій та запуску іншого коду jQuery. Під час використання скриптів, які покладаються на значення властивостей стилю CSS, важливо посилатися на зовнішні таблиці стилів або вбудовувати елементи стилю, перш ніж посилатися на скрипти.

У випадках, коли код покладається на завантажені активи (наприклад, якщо потрібні розміри зображення), код слід помістити loadзамість обробника події.


Відповідь на друге питання -

Ні, вони ідентичні, якщо ви не використовуєте jQuery в режимі без конфлікту.


10

Ці три функції однакові.

$(document).ready(function(){

}) 

і

$(function(){

}); 

і

jQuery(document).ready(function(){

});

тут $використовується для визначення jQuerylike $= jQuery.

Тепер різниця полягає в тому

$(document).readyце подія jQuery, яке запускається при DOMзавантаженні, тому воно запускається, коли структура документа готова.

$(window).load подія запускається після завантаження всього вмісту, як сторінка містить зображення, css тощо.


5

Різниця між $(document).ready()і $(window).load()функціями полягає в тому, що код, включений всередину $(window).load(), запуститься після завантаження всієї сторінки (зображень, кадрів, таблиць стилів тощо), тоді як подія готового до документа запускається перед завантаженням усіх зображень, кадрів тощо, але після всієї самої DOM готовий.


$(document).ready(function(){

}) 

і

$(function(){

});

і

jQuery(document).ready(function(){

});

Різниці між цими вищезгаданими 3 кодами немає.

Вони еквівалентні, але ви можете зіткнутися з конфліктом, якщо будь-який інший JavaScript Frameworks використовує той самий символ долара $, як ім'я ярлика.

jQuery.noConflict();
jQuery.ready(function($){
 //Code using $ as alias to jQuery
});

Різниця між jQuery (документ) .ready (функція () {і jQuery (документ). Вже (функція ($) {? Зверніть увагу на $ усередині дужок.
MarcoZen

3

Готова подія завжди виконується на тому, що в браузер завантажується лише HTML-сторінка, а функції виконуються .... Але подія завантаження виконується під час завантаження всього вмісту сторінки в браузер для сторінки ... .. ми можемо використовувати $ або jQuery, коли використовуємо метод noconflict () у сценаріях jquery ...


2
$(document).ready(function(e) { 
    // executes when HTML-Document is loaded and DOM is ready  
    console.log("page is loading now"); 
});

$(document).load(function(e) { 
    //when html page complete loaded
    console.log("completely loaded"); 
});

2
Будь ласка, поясніть свою відповідь.
BlackBeard

0

$ (window) .load - це подія, яка запускається, коли DOM та весь вміст (усе) сторінки повністю завантажені, як CSS, зображення та кадри. Одним із найкращих прикладів є те, якщо ми хочемо отримати фактичний розмір зображення або отримати детальну інформацію про все, що ми використовуємо.

$ (document) .ready () вказує, що код у ньому потрібно виконати, коли DOM буде завантажений та готовий до маніпулювання сценарієм. Він не чекатиме завантаження зображень для виконання сценарію jQuery.

<script type = "text/javascript">
    //$(window).load was deprecated in 1.8, and removed in jquery 3.0
    // $(window).load(function() {
    //     alert("$(window).load fired");
    // });

    $(document).ready(function() {
        alert("$(document).ready fired");
    });
</script>

$ (window) .load запускається після $ (документа) .ready ().

$(document).ready(function(){

}) 
//and 
$(function(){

}); 
//and
jQuery(document).ready(function(){

});

Вище 3 є однаковими, $ - псевдонім ім'я jQuery, ви можете зіткнутися з конфліктом, якщо будь-які інші рамки JavaScript використовують той же символ долара $. Якщо ви зіткнулися з конфліктом, команда jQuery надає рішення без конфлікту читайте докладніше.

$ (window) .load застаріло в 1.8 та видалено у jquery 3.0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.