Ответ 1
Смотрите выдержку из http://api.jquery.com/ready/
Все три следующих синтаксиса эквивалентны:
$(document).ready(handler)
$().ready(handler)
(это не рекомендуется)$(handler)
Чтобы иметь рабочий пипетщик в поле, я должен поместить этот script внутри моего элемента
$( function() {
$( "#date_datepicker" ).datepicker( { dateFormat: "yy-mm-dd" } );
});
Удаление $( function() {
заставляет datepicker работать.
Значит ли это, что $( function() {
совпадает с $(document).ready
?
Я пытаюсь оптимизировать свои javascript-коды, зная, что это может помочь.
Смотрите выдержку из http://api.jquery.com/ready/
Все три следующих синтаксиса эквивалентны:
$(document).ready(handler)
$().ready(handler)
(это не рекомендуется)$(handler)
Да, это сокращенная версия того же самого. Функция $
вызывает функцию $(document).ready
при передаче функции в качестве аргумента.
Если вы пытаетесь оптимизировать с точки зрения скорости - обе будут выполняться в значительной степени эквивалентно, однако более длинный $(document).ready(handler)
будет минимально быстрее, если выполняется много раз.
Если вы пытаетесь оптимизировать размер файла - используйте minifier.
ИМО, лучшее, что вы можете сделать, это "оптимизировать" с точки зрения удобочитаемости и простоты. Это делает код намного легче понять и поддерживать. Существуют инструменты для получения неоптимизированной версии и сжатия и оптимизации для вас (ознакомьтесь с компилятором Google закрытия).
Метод .ready() обычно используется с анонимной функцией:
$(document).ready(function() {
// Handler for .ready() called.
});
Что эквивалентно вызову:
$(function() {
// Handler for .ready() called.
});
Да, $( function() {
и $(document).ready
совпадают.
$( function() {
работает как сокращенный синтаксис, но $(document).ready
делает код более удобочитаемым.
обратите внимание, что вы также можете найти сценарии, подобные этому:
jQuery(document).ready(function(){
здесь $-sign заменяет jQuery, чтобы избежать конфликтов с другой библиотекой
Вот довольно безопасный способ запуска кода на готовом
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
Вы используете jQuerymobile? если это так, а не использование готового документа
$('#pageId').live('pageinit',function(){});