2011-01-22 23 views
5

He estado trabajando con jQuery desde hace algún tiempo y siempre he utilizado el siguiente para initalise mi javascript:

$(document).ready(function() { 
// Initalisation logic 
}); 

Sin embargo, recientemente he notado una gran cantidad de ejemplos que usan los siguientes:?

$(function() { 

}); 

cuál es la diferencia

Gracias

+0

Gracias a todos por la increíble respuesta rápida !! – Mantisimo

Respuesta

8

Básicamente, no hay uno. El formato $(...) es un atajo. Ver the API docs para jQuery() para más detalles.

me gusta utilizar de esta manera:

jQuery(function($) { 
    // ...all of my jQuery-specific code here... 
}); 

... porque entonces si necesito, puedo usar noConflict si termino tener que mezclar algo en la página que también quiere el símbolo $ , pero aún puedo usar $ en mi código (porque jQuery se pasa a la devolución de llamada como primer argumento, y como puede ver, estoy aceptando ese argumento como $ en mi función de devolución de llamada   — y así sombrea cualquier símbolo global $ que otra biblioteca podría estar usando). Lo anterior también tiene la ventaja de que puedo tener símbolos globales para mi código (var s dentro de la función anónima) que no son en realidad globales.

+0

¿Con qué frecuencia mezclas algo en la página que quiere el símbolo $? Solo tengo curiosidad ya que no sucede a menudo donde trabajo. – finneycanhelp

+0

@finneycanhelp: No a menudo, trato de evitar mezclar demasiadas bibliotecas. Pero, por ejemplo, si migra lentamente un sitio de jQuery a Prototype (o MooTools) o de esos a jQuery, 'noConflict' es importante, porque Prototype y MooTools también usan y se basan en el símbolo' $ '. –

+0

¡Claro! Ruby On Rails y Prototype vienen a la mente. :) – finneycanhelp

2

La diferencia es una cuestión de estilo. Uno es solo un atajo del otro. :) Ver http://api.jquery.com/jQuery/ cerca de la parte inferior donde dice "Ejecuta la función cuando el DOM está listo para ser utilizado"

Cuando le pregunté a una de las personas jQuery UI lo preferían, dijo que prefiere la forma más prolija. Sin embargo, las personas en mi tienda usan esta versión:

$(function() { 

}); 
1

La diferencia es que la primera es más legible. Entonces por favor solo usa este.

$(document).ready(function() { 
// Initalisation logic 
}); 
+0

Estoy de acuerdo con que '$ (document) .ready (function() {...})' es más legible que '$ (function() {...})', pero creo 'jQuery (function ($) {...});' es perfectamente legible. Como cualquier idioma, tienes que aprenderlo una vez. –

+1

No, estás pasando una función a jQuery, pero no hay ninguna pista de lo que jQuery va a funcionar con esa función. – orlp

+0

Como dije, como cualquier modismo, tienes que aprenderlo una vez.Ahora, si usted (como yo) piensa que la función 'jQuery' tiene ** manera ** demasiadas * completamente diferentes * cosas que hace dependiendo de lo que pase (incluso haciendo cosas diferentes cuando pasa en cadenas, dependiendo de el contenido de la cadena), no hay argumento allí, es una de mis cosas favoritas sobre jQuery. Pero al menos solo tiene el * one * que hace cuando pasas en una función por sí mismo. –

Cuestiones relacionadas