JQuery $(function() {}) и $(document). Уже то же самое?

Чтобы иметь рабочий пипетщик в поле, я должен поместить этот script внутри моего элемента

$( function() {
  $( "#date_datepicker" ).datepicker( { dateFormat: "yy-mm-dd" } );
});

Удаление $( function() { заставляет datepicker работать.

Значит ли это, что $( function() { совпадает с $(document).ready?

Я пытаюсь оптимизировать свои javascript-коды, зная, что это может помочь.

Ответ 1

Смотрите выдержку из http://api.jquery.com/ready/

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

  • $(document).ready(handler)
  • $().ready(handler) (это не рекомендуется)
  • $(handler)

Ответ 2

Да, это сокращенная версия того же самого. Функция $ вызывает функцию $(document).ready при передаче функции в качестве аргумента.

Если вы пытаетесь оптимизировать с точки зрения скорости - обе будут выполняться в значительной степени эквивалентно, однако более длинный $(document).ready(handler) будет минимально быстрее, если выполняется много раз.

Если вы пытаетесь оптимизировать размер файла - используйте minifier.

ИМО, лучшее, что вы можете сделать, это "оптимизировать" с точки зрения удобочитаемости и простоты. Это делает код намного легче понять и поддерживать. Существуют инструменты для получения неоптимизированной версии и сжатия и оптимизации для вас (ознакомьтесь с компилятором Google закрытия).

Ответ 3

Метод .ready() обычно используется с анонимной функцией:

$(document).ready(function() {
  // Handler for .ready() called.
});

Что эквивалентно вызову:

$(function() {
 // Handler for .ready() called.
});

Как можно прочитать здесь

Ответ 4

Да, $( function() { и $(document).ready совпадают.

$( function() { работает как сокращенный синтаксис, но $(document).ready делает код более удобочитаемым.

Ответ 5

обратите внимание, что вы также можете найти сценарии, подобные этому:

jQuery(document).ready(function(){

здесь $-sign заменяет jQuery, чтобы избежать конфликтов с другой библиотекой

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

Ответ 6

Вот довольно безопасный способ запуска кода на готовом

jQuery(function($, undefined){
  // code to run onready
});

Хотя я лично предпочитаю делать это так:

(function($){ // create scope and pass specific aliased variables

    $(function($, undefined){ // attach callback to run onready
       // code to run onready
    });

})(jQuery);

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

(function($){ // create scope and pass specific aliased variables


    $(document).on('click', 'a[href]', function(){
       // code to run when a link is clicked
    });
    $(window).on('load',function(){
       // code to run onload
    });
    $(function($, undefined){ // attach callback to run onready
       // code to run onready
    });


})(jQuery);

Обратите внимание, что это те же самые

$(document).bind('ready', function(){});
$(document).on('ready', function(){});
$(document).ready(function(){});
$(function(){});

И этот документ не имеет события загрузки

$(document).on('load', function(){}); // will not work

Ответ 7

Вы используете jQuerymobile? если это так, а не использование готового документа

$('#pageId').live('pageinit',function(){});