Если я загружаю сценарии jQuery под всем своим HTML-страницей, мне все еще нужно ждать $(document).ready
, чтобы иметь возможность использовать jQuery для поиска элементов на странице?
ответ
Вы делаете не необходимо использовать функцию jQuery's ready
, но ваш код должен быть написан с учетом этого. Любые click
или другие обработчики привязки могут неправильно подключаться к селекторам, однако другие, такие как live
и $.ajax
, могут функционировать в соответствии с назначением.
Будьте осторожны при использовании сценариев-загрузчиков или AMD с использованием этого подхода. jQuery должен быть доступен, и вы должны заблокировать его при загрузке. Загрузите jQuery и другие депо в голове.
Отличный взгляд на эту технику, которая описывает, что это не является необходимым для использования JQuery для функции (не обязательно об использовании в сноске):
http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/
Почему 'click' (или селекторы) не работают? –
(Эта ссылка говорит об использовании скриптов в позиции HEAD, но не в FOOT-позиции.) –
Это будет работать на все, что доступно в DOM перед выполнением. Все, что загружено после, любыми способами, например ajax или добавленное в последующем изменении документа, не будет получено jQuery 'click' – philwinkle
Нет, вам не нужно $(document).ready
для любого код, который взаимодействует с элементами DOM на странице, если скрипты расположены ниже этих элементов.
Рекомендуется установить их перед закрытием тега </body>
.
В теге HTML есть только два действительных дочерних элемента: голова и тело, поэтому я бы сказал, что лучше всего использовать теги скриптов в теге закрывающего тега. Parsers могут быть странными с недопустимым HTML – Hazza
Нет, потому что документ уже был загружен. Дом загружается сверху вниз. Я лично хотел бы поместить все мои js в нижней части страницы, а не в голову.
Однако это всего лишь 1 строка кода, и я бы предложил использовать ее только для того, чтобы быть в безопасности. также вы можете сделать его еще короче. $(function() {}
- это то же самое, что и $(document).ready(function(){})
Я не понимаю, почему вы должны использовать его только для того, чтобы быть в безопасности; похоже, что это излишне замедлит выполнение. –
, потому что всегда будет кто-то с некоторой конфигурацией браузера, который потерпит неудачу, если он не увидит, чего он хочет или ожидает. running '$ (function() {}' один раз не замедляет работу, достаточную для вас, чтобы ухаживать. посмотрите http://stackoverflow.com/questions/8160014/document-ready-check-slows-down-ie и прочитайте комментарии для принятого ответа с использованием '$ (function() {}' в среднем будут занимать 2-3 мс. на стороне примечания, если вы используете php, вы можете сделать функцию или класс, чтобы поместить все js в 1 файл в 1 '$ (function() {}' или вы можете сделать это в js to. загляните в программные шаблоны проектирования. – Yamiko
«Технически», да - «практически», нет. Это было последовательное (неопределенное) поведение для браузеров в течение многих лет. Тем не менее, я считаю, что может быть какая-то магия с 'ready' и фреймами в IE ... скрипт должен по-прежнему быть внутри * тега body. –
Кроме того, «нижний колонтитул» означает «
В конце '
' –