Функция готовности документа jQuery - PullRequest
14 голосов
/ 22 апреля 2011

Являются ли конечные результаты следующих фрагментов jQuery идентичными?

Фрагмент 1:

$(function() { alert('test!'); });

Фрагмент 2:

$(document).ready(function() { alert('test!'); });

Другими словами, $(function(){}) это просто сокращение для $(document).ready(function() { });?

Причина, по которой я спрашиваю, заключается в том, что мы видим некоторые странные проблемы с небольшим приложением, которое мы создалииспользуя jQuery и jQuery UI.Иногда при выполнении действия отправки формы нажатием кнопки окно браузера просто останавливается.Мы все еще можем использовать основное окно браузера (которое запускает всплывающее окно), пока мы не выполним некоторые действия там.Пользователи могут продолжить работу только путем принудительного закрытия браузера (очевидно, Internet Explorer).Мы подозреваем, что это связано с подключаемым модулем Acrobat PDF, но я просто проверяю все углы здесь, потому что обнаружил эту проблему , которая, похоже, демонстрирует аналогичное поведение.

Ответы [ 7 ]

11 голосов
/ 22 апреля 2011

Все три следующих синтаксиса эквивалентны:

$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)

Псевдоним пространства имен jQuery

При использовании другой библиотеки JavaScript мы можем вызвать $ .noConflict (), чтобы избежать пространства иментрудности.Когда эта функция вызывается, ярлык $ больше не доступен, что заставляет нас писать jQuery каждый раз, когда мы обычно пишем $.Однако обработчик, передаваемый методу .ready (), может принимать аргумент, который передается глобальному объекту jQuery.Это означает, что мы можем переименовать объект в контексте нашего обработчика .ready (), не затрагивая другой код:

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});
8 голосов
/ 22 апреля 2011

Да, они эквивалентны.Смотрите эту ссылку для справки .ready ()

4 голосов
/ 22 апреля 2011

Да, это идентично. но первый обычно используется в jquery для простоты.

$(function() { 
    alert('test!'); 
});
4 голосов
/ 22 апреля 2011

$(function(){}) и $(document).ready(function() { }) идентичны.

3 голосов
/ 01 июля 2013

Следующий код также работает

$(document).ready(function(){
    alert("success");
});

ИЛИ

$(function(){
    alert("succes");
});
1 голос
/ 23 октября 2014

Да

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

… и:

$(function() { 
  /* code */
});

… фактически одинаковы, и последний обычно называют сокращением для первого.

Если вам интересно , почему они дают одинаковый результат, это связано с конструктором jQuery - функцией jQuery() с псевдонимом $() - и его разрешенные входы.

Конструктор задокументирован по адресу api.jquery.com / jquery / , и его два соответствующих параметра описаны ниже.


jQuery( selector [, context ] )

Принимает строку, содержащую селектор CSS, который затем используется для сопоставления с набором элементов.

Возвращает объект jQuery.

Эта опция выше, как вы вызываете конструктор jQuery при написании:

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

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


jQuery( callback )

Связывает функцию, которая будет выполнена после завершения загрузки DOM.

Возвращает объект jQuery.

Эта опция выше, как вы вызываете конструктор jQuery при написании:

$(function() { /* code */ });

Функция обратного вызова (анонимная функция) используется для создания объекта jQuery, а когда DOM полностью загружен, он вызывается.

0 голосов
/ 11 марта 2017

Различные способы написания фрагмента кода в формате jQuery

$(document).ready(function() { ... }); 
$(function() { ... });
jQuery(document).ready(function() { ... });
jQuery(function() { ... });

http://webiwip.com/interview-questions-answers/jquery-interview-questions/10510

...