Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Когда происходит $(document).ready ? (https://javascript.ru/forum/jquery/27267-kogda-proiskhodit-%24-document-ready.html)

zebra741258963 07.04.2012 17:35

Когда происходит $(document).ready ?
 
С самого начала изучения jQuery был приучен что код должен прописываться внутри $(document).ready

Я считал что событие redy происходит когда страница ПОЛНОСТЬЮ загружена. Однако в первой же своей работе где применялся jQuery я сталкнулся с такой особенностью - у меня там было 9 картинок которые должны были зуммироваться, и по этому я должен был в самом начале отцентрировать их в зависимости от их ширины. Первые 5-6 картинок всегда нормально ставили позицию, а последние картинки при первом заходе на сайт всегда центрировались неправильно. Однако если пользователь нажимал F5 или заходил на сайт повторно - то с картинками уже всё было нормально. Тоесть если картинки есть в кеше браузера, то проблем нету, а если они грузятся впервые, то такое ощущение что $(document).ready срабатывает раньше чем загружаются все картинки!

В тот раз я не стал глубоко разбираться, ведь картинок всего 9, и просто вписал <img MyWidth=### MyHeight=### src=...> (всё равно при зумировании width и height поменяют свои значения и их надо будет сбрасывать на начальные...

Прошло время, и тут мне звонит друг и спрашивает - как получить ширину картинки?
Я ему говорю - $(...).width
Он отвечает что так и делает, но получает - 0 (ноль)
Я говорю что такое может быть если ещё не загрузилась
Но он говорит что у него код выполяется в $(document).ready
И тут я вспомнил что у меня такая проблема уже была и предложил выполнить это же действие в $('#Kartinka').load
И он получил её размер...

Вот сейчас не понимаю, значит $(document).ready - это НЕ означает что все элементы документа загрузились?

zebra 07.04.2012 17:42

испольщуйте window.onload

Kolyaj 07.04.2012 17:48

$.ready -- загрузился весь HTML-код страницы.
Событие load у window -- загрузилась вся страница, включая внешние ресурсы.

Kolyaj 07.04.2012 17:49

zebra741258963,
zebra,
у вас тут гнездо походу.

zebra 07.04.2012 18:04

Не, рейтинг набиваю

T-sh 07.04.2012 21:40

что вы тут городите??7

$(document).ready — событие полной загрузки DOM документа (т.е. когда получены все элементы и объекты). Простыми словами, когда браузер узнает, что получил всю разметку страницы — тогда сработает.

Т.е. не ждёт, пока загрузятся все изображения и прочее, а стартует сразу, как получает разметку, а потом уже идёт догрузка содержимого

Kolyaj 07.04.2012 22:43

T-sh,
объясните, пожалуйста, как предложение
Цитата:

Сообщение от Kolyaj
$.ready -- загрузился весь HTML-код страницы.

противоречит вашему сообщению?

T-sh 07.04.2012 22:53

Цитата:

Сообщение от Kolyaj (Сообщение 167677)
T-sh,
объясните, пожалуйста, как предложение
противоречит вашему сообщению?

эт я на сабж ответил, т.е на:

Цитата:

С самого начала изучения jQuery был приучен что код должен прописываться внутри $(document).ready
Я считал что событие redy происходит когда страница ПОЛНОСТЬЮ загружена. Однако в первой же своей работе где применялся jQuery я сталкнулся с такой особенностью - у меня там было 9 картинок которые должны были зуммироваться,....
а так да.. можно сказать и html код :) но всё-таки работа идём с DOM :)

zebra741258963 07.04.2012 23:24

Всем большое спаисбо.
Может теоретически спрошу - а для какого-то объекта ещё .redy имеет смысл использовать? (про .load понятно что для картинок, может ещё для флеша или музыки) А .redy вроде не придумал где может ещё использоваться.

И прошу прощения у пользователя zebra за схожесть ников, хотя свой уже несколько использую в сети, но из-за уважения готов сменить на этом сайте свой ник чтобы он не вводил в заблуждение пользователей (если есть такая техническая возможность у админов)


Часовой пояс GMT +3, время: 16:58.