Прежде всего, вы можете сократить, что:
<script type="text/javascript" >
jQuery(function() {
...
});
</script>
Во-вторых, если вы хотите, чтобы ваши скрипты для запуска, когда страница завершена загрузка, тогда да, вы должны поместить их в функцию jQuery
/document.ready()
. Вы можете поместить их все в один и тот же блок jQuery(function() { })
, хотя они будут выполнены по порядку, вам не нужно их разделить.
Для расширения выработок function() {}
блоков:
jQuery(/* do something */);
средства "при загрузке страницы, сделать что-то". Это «сделать что-то» является функцией. Вы можете передать его функции непосредственно, как это:
function myFunction() {
...
}
jQuery(myFunction);
Вы определили функцию «myFunction
» и сказал, JQuery, чтобы выполнить его при загрузке страницы. Обратите внимание, что вы просто передаете функцию непосредственно в jQuery, без ()
. Если вы вместо этого напишите jQuery(myFunction());
, это будет немедленно исполнено myFunction()
, и все, что возвращается myFunction()
, будет размещено в jQuery()
, и это будет выполнено при загрузке страницы. Это немного отличается от языков, таких как PHP, поскольку в PHP желательно, чтобы все сразу выполнялось, в Javascript, что не обязательно так. В PHP вы не можете передать функцию самостоятельно, в Javascript вы можете. Функции в Javascript намного больше похожи на переменные.
Что вы обычно делаете это «составляют функцию на лету», который содержит некоторый блок кода, который вы хотите выполнить в более позднее время:
jQuery(function() {
foo();
bar();
});
В этом случае вы передаете функцию ну, просто, что вы сделали это на лету, а функция не имеет имени. jQuery будет удерживать эту функцию до загрузки страницы, после чего она ее выполнит. Внутри этой функции вы можете делать столько, сколько хотите.
Я не согласен с повторным использованием вообще, но что получается с помощью init вместо функции someFunction непосредственно в .ready? – jfsk3
Скажем, у меня была функция, которая настраивала аккордеон, а затем на странице c ycle Я загружался в другом контенте с использованием ajax и нуждался в повторной инициализации аккордеона. Если бы я наполнил код в документе готов, я не смог бы его повторно использовать. – redsquare
Он также помогает улучшить трассировку стека при отладке, поскольку вы получаете именованные функции, а не анонимные функции. – redsquare