Re: [jQuery-es] Estructurar código
Choan C. Gálvez
choan.galvez en gmail.com
Mar Nov 28 04:35:31 PST 2006
Hola.
On 11/27/06, stripTM <fer en striptm.com> wrote:
> Lo que yo estoy haciendo últimamente es en ese array de funciones el
> tener una de inicio() que se encarga de asignar los eventos a los
> elementos utilizando jquery
>
> Y utilizar también jquery para cuando salte el ready() llamen a la
> función inicio(), no tengo constancia de que haya fallado porque cargue
> antes un script que el de jquery y no lo tenga disponible.
>
> En resumen de como me creo los scripts
>
> HOME = {
> // Popups y demás historias de la web
> // Autor: stripTM
> // ***************************************************
> inicio : function() {
> // Home del sitio
> $("#lienzo #news").click(function(){return HOME.popup(this.href,'news',650,850,0)});
> $("#lienzo #urbanfu").click(function(){return HOME.popup(this.href,'galeria',650,850,0)});
> ...
> },
> resto de funciones...
> }
>
> $(document).ready(function(){HOME.inicio();});
Fer, si me lo permites, seré un poco tiquismiquis. No te lo tomes a mal ;)
`HOME.inicio` es una función, no es necesario crear una closure para
pasársela a `ready`. Podrías reescribir ese pedazo tal que:
$(document).ready(HOME.inicio);
Y si quieres rizar el rizo, puedes usar la versión abreviada de `ready`:
$(HOME.inicio);
(Nótese: si el argumento que pasamos a la función `$` es una función,
jQuery hace la derivación a `$(document).ready` automágicamente.)
Ah, otra cosa: cuando jQuery se encuentra con un selector del tipo
`#bla`, realiza la selección de nodos llamando a
`document.getElementById`, por tanto
$("#lienzo #news")
puede ser reescrito como
$("#news")
Unos cuantos caracteres de menos y una pequeñísima (intuyo) mejora en
performance.
Manías mías aparte, el uso de objetos estáticos (yo no le llamaría
JSON a esto) es, en efecto, una buena técnica y una buena práctica.
Salud.
--
Choan
<http://choangalvez.nom.es/>
Más información sobre la lista de distribución jquery-es