2012-05-01 2 views
18

Если я загружаю сценарии jQuery под всем своим HTML-страницей, мне все еще нужно ждать $(document).ready, чтобы иметь возможность использовать jQuery для поиска элементов на странице?

+0

«Технически», да - «практически», нет. Это было последовательное (неопределенное) поведение для браузеров в течение многих лет. Тем не менее, я считаю, что может быть какая-то магия с 'ready' и фреймами в IE ... скрипт должен по-прежнему быть внутри * тега body. –

+0

Кроме того, «нижний колонтитул» означает «

» или в конце '' или ...? –

+0

В конце '' –

ответ

1

Вы делаете не необходимо использовать функцию jQuery's ready, но ваш код должен быть написан с учетом этого. Любые click или другие обработчики привязки могут неправильно подключаться к селекторам, однако другие, такие как live и $.ajax, могут функционировать в соответствии с назначением.

Будьте осторожны при использовании сценариев-загрузчиков или AMD с использованием этого подхода. jQuery должен быть доступен, и вы должны заблокировать его при загрузке. Загрузите jQuery и другие депо в голове.

Отличный взгляд на эту технику, которая описывает, что это не является необходимым для использования JQuery для функции (не обязательно об использовании в сноске):

http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/

+1

Почему 'click' (или селекторы) не работают? –

+0

(Эта ссылка говорит об использовании скриптов в позиции HEAD, но не в FOOT-позиции.) –

+0

Это будет работать на все, что доступно в DOM перед выполнением. Все, что загружено после, любыми способами, например ajax или добавленное в последующем изменении документа, не будет получено jQuery 'click' – philwinkle

5

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

Рекомендуется установить их перед закрытием тега </body>.

+0

В теге HTML есть только два действительных дочерних элемента: голова и тело, поэтому я бы сказал, что лучше всего использовать теги скриптов в теге закрывающего тега. Parsers могут быть странными с недопустимым HTML – Hazza

5

Нет, потому что документ уже был загружен. Дом загружается сверху вниз. Я лично хотел бы поместить все мои js в нижней части страницы, а не в голову.

Однако это всего лишь 1 строка кода, и я бы предложил использовать ее только для того, чтобы быть в безопасности. также вы можете сделать его еще короче. $(function() {} - это то же самое, что и $(document).ready(function(){})

+1

Я не понимаю, почему вы должны использовать его только для того, чтобы быть в безопасности; похоже, что это излишне замедлит выполнение. –

+0

, потому что всегда будет кто-то с некоторой конфигурацией браузера, который потерпит неудачу, если он не увидит, чего он хочет или ожидает. running '$ (function() {}' один раз не замедляет работу, достаточную для вас, чтобы ухаживать. посмотрите http://stackoverflow.com/questions/8160014/document-ready-check-slows-down-ie и прочитайте комментарии для принятого ответа с использованием '$ (function() {}' в среднем будут занимать 2-3 мс. на стороне примечания, если вы используете php, вы можете сделать функцию или класс, чтобы поместить все js в 1 файл в 1 '$ (function() {}' или вы можете сделать это в js to. загляните в программные шаблоны проектирования. – Yamiko

 Смежные вопросы

  • Нет связанных вопросов^_^