четверг, 18 декабря 2008 г.

Jquery: функция $(document).ready()

Этой небольшой статьей я бы хотел начать рассказывать о технологии ajax,а именно про framework jquery. Связано это с тем, что в данный момент мне приходиться больше внимания уделять web-разработке, а создавать отдельный блог не хочеться. Итак, начнем...
Из википедии:
jQuery — JavaScript-фреймворк, фокусирующийся на взаимодействии JavaScript и HTML. Был опубликован на компьютерной конференции «BarCamp» в Нью-Йорке Джоном Ресигом в 2006 году.
$(document).ready()- первая функция, которую нужно знать при изучении jQuery. Выполнится она после того как все DOM объекты на странице будут загружены.

Приведу простейший пример:
$(document).ready(function() {
alert('Hello, world');
});
В данном примере произойдет событие alert() в момент когда страница загрузится.
У функции $(document).ready() есть множество преимуществ перед другими способами заставить события срабатывать.

С $(document).ready(), Вы можете заставить свои события срабатывать независимо от того, что было загружено на странице ранее. Все, что Вы заключаете внутрь функции, сработает в самом начале — как только DOM зарегистрирован браузером.

подземная гидроизоляция очень важна. Поэтому, загляните по ссылке и узнаете - зачем она нужна

5 комментариев:

Анонимный комментирует...

А еще классно то, что можно использовать более короткую форму записи:
$(function() {
...
});

Анонимный комментирует...

И то, что можно использовать несколько обработчиков события, предыдущие не затрутся и будут обработаны все. Это касается всех событий в jQuery, а не только ready.

Анонимный комментирует...

Это всё прекрасно, конечно...

Но есть более насущная проблема.

ДАНО: страница статичная (html+css+js). После загрузки html-каркаса интерфейс обрабатывается плагинами jQuery (и не только, хотя это уже не принципиально). Внизу (в подвале) вставлены коды счётчиков в том виде, в котором их выдают rambler, google, yandex, liveinternet и т.п.

ПРОБЛЕМА: пока не отработают обращения скриптов счётчиков, управление не передаётся в $(document).ready(). В итоге внешний вид сайта иногда до 10 секунд остаётся "кривым", т.к. неподгрузившиеся счётчики не дают выполниться jQuery.

Какие есть предложения?

Как вообще можно эти счётчики заставить грузиться в последнюю очередь? Учитывая, что это дикая смесь html+JS, которую непонятно как импортировать без искажений...

Geddar комментирует...

А ты попробуй воткнуть счётчики в iframe - решение не лучшее, но думаю поможет

yas комментирует...

2Аноним: ну как вариант ты в принципе можешь счётчики подгрузить аяксом. хотя конечно это не очень хорошо. и в случае отключенного у поьлзователя ява-скрипта ты не увидишь статистику о нём в своих счётчиках. Но в принципе если у тебя такая страница, что без ява-скрипта отображение является "кривым", то думаю, что это не очень принциппиально.

а еще ты можешь какие-то действия в твоём скрипте выполнять не после всей загрузки страницы, а после загрузки каких-то элементов. ну т.е. если тебе надо какое-то действие на какой-то элемент навесить, то навешивай после загрузки документа, т.е. типа так:
---
$(documeny).ready(function() {

});
---
А если тебе надо просто что-то спрятать, то так и пиши:
$('#myelement').hide();

Ну правда если у тебя до момента выполнения этого кода еще не загрузится библиотека jquery, то действие не выполнится и может будет ошибка... Вобщем надо пробовать.

А лучше конечно постараться сделать страницу в вёрстке так, чтобы и без скриптов она нормально смотрелась.