2012-05-15 14 views
10

Tener un selector de fechas trabajando en un campo, tengo que poner este script dentro de mi elemento

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

Extracción de la $(function() { hace que el selector de fechas no funciona.

¿Significa que el $(function() { es el mismo que $(document).ready?

Estoy tratando de optimizar mis códigos de JavaScript por lo que saber esto podría ayudar.

+0

posible duplicado de [jQuery función de lista de documentos] (http: // stackoverflow .com/questions/5754192/jquery-document-ready-function) – jtheletter

Respuesta

19

Véase el siguiente fragmento de http://api.jquery.com/ready/

Los tres de las siguientes sintaxis son equivalentes:

  • $(document).ready(handler)
  • $().ready(handler) (esto no es recomendable)
  • $(handler)
+2

Gracias, estaba buscando en google, pero creo que tener algunos caracteres especiales como $ hace que sea difícil obtener el resultado correcto. – MegaNairda

4

Sí, es una versión abreviada de la misma cosa. La función $ llama a la función $(document).ready cuando pasa una función como argumento.

Si está tratando de optimizar en términos de velocidad, ambos funcionarán de manera bastante similar, sin embargo, el más largo $(document).ready(handler) será mínimamente más rápido si se ejecuta muchas veces.

Si está intentando optimizar en términos de tamaño de archivo, use un minificador.

IMO lo mejor que puede hacer es 'optimizar' en términos de legibilidad y simplicidad. Esto hace que el código sea mucho más fácil de comprender y mantener. Existen herramientas para tomar una versión no optimizada y comprimir y optimizar para usted (consulte el compilador de cierre de Google).

+0

Mi código contiene los dos que mencioné en la parte superior de mi página. Sin embargo, es bueno que no haya tenido problemas para tenerlos a ambos en la parte superior de mi página. Trataré de usar un minificador como dijiste una vez que termine de optimizar mi código manualmente, reduciendo los códigos redundantes como estos y otras llamadas similares que se pueden combinar en una llamada a la función – MegaNairda

+0

Espero no encontrar compatibilidad problemas al usar _shorthand_ como lo que sucede con Internet Explorer cuando se usa el atajo ajax '$ .post' – MegaNairda

1

Sí, $(function() { y $(document).ready son lo mismo.

$(function() { funciona como una sintaxis abreviada pero $(document).ready hace que el código sea más legible.

+1

Gracias, yo también preferiría el' $ (documento) .ready' en lugar del '$ (función() {' . – MegaNairda

3

El ready() método se utiliza típicamente con una función anónima:

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

cual es equivalente a llamar:

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

As can be read here

-1

¿Está utilizando jquery mobile?si es así en lugar de utilizar el documento utilización listo

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

No realmente , solo el jQuery normal. – MegaNairda

1

Aquí es una manera bastante segura para ejecutar código en lista

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

Aunque yo personalmente prefiero hacerlo de esta manera:

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

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

})(jQuery); 

De esta manera usted puede hacer sus propios paquetes de funcionalidad sin miedo a romper otro código pueblos o tener su código roto por las definiciones de variables flojos. También puede llamar a las variables que pase junto con los nombres que desee y tenga código que ejecute no en listo, por ejemplo.

(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); 

en cuenta que estos son los mismos

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

Y ese documento no tiene un evento de carga

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