В чем разница между `$ (window) .load (function () {})` и `$ (function () {})`

Я использовал$(window).load(function(){}); для моих проектов, пока где-то я не увидел, что кто-то сказал, что мы могли бы просто использовать$(function(){}); и они будут работать одинаково.
Но теперь, когда у меня больше опыта, я заметил, что они не идентичны. Я заметил, что первая часть начинает работать после второй части кода.
Я просто хочу знать, в чем разница?

 Jashwant07 июн. 2012 г., 16:19
@ & # x160; imeVidas, точно в цель +1
 Šime Vidas07 июн. 2012 г., 16:09
Первый связывает функцию сload событие, а второй связывает его сDOMContentLoaded событие (которое происходит раньше)
 Mottie07 июн. 2012 г., 17:25

Ответы на вопрос(4)

JQuery Docs сам.

Первое, что в конечном итоге делает большинство программистов на Javascript, это добавляет в свою программу некоторый код, подобный следующему:

window.onload = function(){ alert("welcome"); }

Внутри которого находится код, который вы хотите запустить прямо при загрузке страницы. Однако проблематично, что код Javascript не запускается до тех пор, пока все изображения не будут загружены (это включает в себя рекламные баннеры). Причина использования window.onload, в первую очередь, заключается в том, что HTML «документ» загрузка еще не завершена, когда вы впервые пытаетесь запустить свой код.

Чтобы обойти обе проблемы, jQuery имеет простой оператор, который проверяет документ и ожидает его готовности к манипулированию, известный как событие ready:

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

Сейчас,

$(window).load(function(){});  равноwindow.onload = function(){ alert("welcome"); }

А также,$(function(){});  это ярлык$(document).ready(function(){ });

Я думаю, это очищает все :)

 07 июн. 2012 г., 17:18
Я согласен, @Blazemonger :)
 08 июл. 2014 г., 18:35
JQuery это не что иное, как Javascript. Как сайт Mozilla показал, что он такой же, какdocument.readyState достигнув полной
 07 июн. 2012 г., 16:23
В качестве сноски я лично всегда предпочитаю разобрать$(document).ready(function() {...}); для ясности. Менее опытный разработчик, идущий за мной, может не знать, что$(function(){..} значит, или кто-нибудь (включая меня) может взглянуть на это и увидетьfunction() {...} вместо этого и получите неправильное представление. При кодировании всегда лучше быть ясным, чем экономить несколько нажатий клавиш и способствовать путанице.
 08 июл. 2014 г., 17:47
@Jashwant - Вы знаете, что именно запускает $ (window) .load ()? Я верю, что это когдаdocument.readyState изменения вcomplete но я не могу найти это нигде в документации jQuery. Вот ссылка на Mozilla:developer.mozilla.org/en-US/docs/Web/API/document.readyState
Решение Вопроса
$(document).ready(function(){})

а не загрузки всего окна. Например, он не будет ждать полной загрузки изображений, CSS или JavaScript. Как только DOM загружен со всеми компонентами HTML и обработчиками событий, документ готов к обработке, и затем $ (document) .ready () завершит работу.

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

Это ожидает загрузки всего окна. Когда вся страница загружена, завершается только $ (window) .load (). Следовательно, очевидно, что $ (document) .ready (function () {}) заканчивается до $ (window) .load (), потому что заполнение компонентов (например, изображений, css) занимает больше времени, чем просто загрузка дерева DOM.

Так$(function(){}); не может быть использован в качестве замены$(window).load(function(){});

$(document).ready(), который должен бежать раньшеwindowсобытие загрузки.

Обратите внимание, что$(document).ready() является предпочтительным способом связывания чего-либо сdocument нагрузка; Есть несколько других способов сделать это, как вы показали, но это предпочтительнее.

$(window).load из моего опыта ждет, пока все, включая изображения, загружается, прежде чем запускать, где как$(function() {}); имеет такое же поведение, как$(document).ready(function() {});

Пожалуйста, кто-нибудь поправит меня, если я ошибаюсь.

 07 июн. 2012 г., 16:18
Я согласен с Дэвидом. Исправляем даже форматирование :)
 07 июн. 2012 г., 16:15
При переполнении стека мы исправим вас, если вы ошиблись; вам не нужно просить об этом :) В этом случае вы совсем не ошибаетесь.

Ваш ответ на вопрос