какая разница между
$(function(){
});
и
$(document).ready(function() {
});
какая разница между
$(function(){
});
и
$(document).ready(function() {
});
Эта функция ведет себя так же, как $(document).ready(), поскольку он должен можно использовать для переноса других $()
Вы можете увидеть это в исходный код:
rootjQuery = jQuery(document);
...
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
} else if (jQuery.isFunction(selector)) {
return rootjQuery.ready(selector);
}
Из источника
Вызов $(document).ready(selector)
сохраняет несколько операторов if.
Хотя jQuery делает кэширование $(document)
внутренне, что может сделать $(f)
быстрее.
Оба эквивалентны, первая - сокращенная форма.
$(function() {}) является короткой средой для dom ready
Функция, переданная как аргумент конструктору jQuery, привязывается к событию готовности документа.
Оба эквивалентны: используйте любую форму, которая вам нравится.
Тем не менее, я лично всегда использую расширенную форму $(document).ready(function(){});
по той простой причине, что совершенно очевидно, что делает код. Приблизительная идея заключается в "самодокументируемом коде". Любой, кто приходит к коду позже, сразу увидит, что код должен быть запущен в событии document
ready
. В короткой форме вам нужно полагаться на читателя вашего кода, понимающего смысл.
Я предлагаю вам прочитать this. Как вы можете видеть
Все три следующих синтаксиса эквивалентны:
$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)
Итак, это зависит от вас и от того, что вы предпочитаете.
Они практически одинаковы. Нет разницы.
Это родной путь.
$(document).ready(function() {
// code
});
И это сокращение для предыдущего.
$(function() {
// code
});
Мы столкнулись с ситуациями, когда IE9 не запускает функции в $(function() {}); таким же образом или по времени, как $(document).ready(function() {});
Проблема подняла голову для нас специально для чтения информации из строки запроса и обработки и отображения этой информации на экране или использования ее для обработки формы. IE9 обрабатывал бы информацию, как только она была кэширована с помощью $(function(), и пользователь обновил страницу, но при первом запуске ничего не получилось. Однако, как только мы перейдем от $(function() {}) к $( document).ready(), проблема была исправлена. Мы изменили NOTHING else.
Я с нетерпением жду того дня, когда мне не нужно тестировать IE9 и ниже.
Я использую $(function() {});
, потому что он короче. Насколько я знаю, нет никакой разницы между двумя способами этого.