Почему я должен заключать команды jQuery в функцию

0

В настоящее время я работаю через Learning jQuery Karl Swedberg, где все образцы кода jQuery в книге содержатся в $ (document).ready().

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

Например

$(document).ready(function(){
    alert("The page has loaded.");
    alert("2nd alert.");
});

В приведенном выше примере, почему предупреждение должно содержаться в функции() для работы, и не может быть примером, подобным приведенному ниже, не будет работать.

$(document).ready(
    alert("The page has loaded.");
    alert("2nd alert.");
);

Буду признателен, если кто-нибудь сможет просветить меня.

  • 2
    Потому что .ready принимает функцию (т.е. так было написано )
  • 3
    Потому что это просто синтаксическая ошибка.
Показать ещё 1 комментарий
Теги:
document-ready

3 ответа

0
Лучший ответ

$ (document).ready принимает обратный вызов. Обратный вызов - это функция javascript. Функции Javascript могут передаваться как переменные. В приведенном выше примере вы используете встроенную анонимную функцию, то есть функцию без имени.

Вы можете переписать свой пример следующим образом:

function doStuff() {
    alert("The page has loaded.");
    alert("2nd alert.");
}

$(document).ready(doStuff);

Вам нужно использовать функцию, потому что вы не можете передавать инструкции в качестве параметров функции, но вы можете передать функцию.

Обратите внимание, что если вы не хотите вводить столько же, это сокращенная нотация, которая функционально эквивалентна:

$(function() {
    alert("The page has loaded.");
    alert("2nd alert.");
});

или без встроенной функции:

function doStuff() {
    alert("The page has loaded.");
    alert("2nd alert.");
}

$(doStuff);
1

Читает документы, он задает функцию, выполняемую при полной загрузке DOM.

.ready (обработчик)

Где, обработчик

Тип: Функция()

Функция, выполняемая после DOM, готова.

0

$(document).ready() ожидает функцию. Второй пример - синтаксическая ошибка, так как alert("The page has loaded."); alert("2nd alert."); alert("The page has loaded."); alert("2nd alert."); не является допустимым списком параметров.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню