Должен ли я использовать window.load или document.ready JQuery - PullRequest
14 голосов
/ 19 декабря 2011

Недавно я увидел, что вы можете использовать либо

$('document').ready(function() {
//Do Code
});

, либо

$('window').load(function() {
//Do Code
});

для jQuery.

Однако мне они кажутся одинаковыми!Но явно нет.

Итак, мой вопрос: какой из них использовать для веб-сайтов, основанных на анимации и асинхронности?А также, какой из двух обычно лучше использовать?

Спасибо.

Ответы [ 2 ]

31 голосов
/ 19 декабря 2011

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

$(window).load запускает код, когда страница была нарисована и весь контент был загружен. Это может быть полезно, когда вам нужно получить размер изображения. Если изображение не имеет стиля или ширины / высоты, вы не сможете получить его размер, если не используете $(window).load.

7 голосов
/ 19 декабря 2011

Ну, во-первых, вы можете рассмотреть возможность использования события "ready", которое вы можете обработать следующим образом:

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

Или, более кратко и идиоматически:

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

Обработчик «load» действительно относится к реальному событию и может обрабатываться несколькими элементами: например, <img> и <iframe>. Событие «load» на уровне документа или окна происходит, когда загружены все ресурсы страницы. Однако (синтезированное в некоторых браузерах) событие «готово» происходит, когда DOM страницы готово, но, возможно, до таких вещей, как <img> содержимое.

Другой вариант - просто поместить теги <script> в самый конец <body> или даже после <body>. Таким образом, у сценариев есть весь DOM для работы, но вам не нужно беспокоиться о какой-либо обработке событий, чтобы знать это.

...