jquery: $ (документ).готовы принимать только анонимный обработчик?

#javascript #jquery

#javascript #jquery

Вопрос:

Возможно ли иметь определенную функцию в качестве обработчика для jQuery $ (document).ready() вместо анонимной функции?

Я провел несколько экспериментов, но безрезультатно. Один из них здесь :http://pastebin.com/XHKPc879 .

Ответ №1:

Да, это возможно:

 function pancakes() { /* Do interesting things */ }
$(document).ready(pancakes);
  

Проблема с вашим pastebin:

 $(document).ready(test());
  

вы вызываете test функцию, когда говорите test() , просто опустите скобки, и все готово.

Комментарии:

1. Не только возможный, но и, возможно, хороший способ сохранить ваш код в виде удобных управляемых фрагментов, а также не вкладывать его полностью за пределы правого поля. 🙂

2. @WestonC Подождите, вы имеете в виду, что если вы перевернете код на бок, левое поле не будет графиком того, насколько это круто?!

3. Только если вы программируете, используя язык пробелов .

4. Язык пробелов для меня не достаточно вежлив .

Ответ №2:

Конечно, обычная функция — это такая же функция, как и анонимная.

Вот рабочая скрипка.

В вашем примере вы фактически вызываете функцию и передаете ее возвращаемое значение в прочитанный документ, потому что у вас есть закрытие () для него. Отключите их, и это должно сработать.

Конечно, если вы вызываете функцию, которая возвращает функцию, это тоже работает.

Редактировать

Первая ссылка:

 function foo() {
    alert("ohai!");
}

$(document).ready(foo);
  

Вторая ссылка:

 function fooGen() {
    return function() {
        alert("kthxbai!");
    };
}

$(document).ready(fooGen());
  

Ответ №3:

Вы также можете назвать свою анонимную функцию, чтобы она была не совсем анонимной:

 $(function bob(){
   alert('hi');
});
  

Иногда это полезно при отладке.