2011-03-17 13 views
5

durante más tiempo que yo estaba escribiendo toda mi código dentro como esto ...¿Es esta una forma inteligente de organizar el código en jQuery?

$(document).ready(function(){ 
    $('.show_module').click(function(){ 

    }); 
    ... 

}); 

poniendo todo tipo de manipuladores clic en ese país. Pero recientemente me presentaron una nueva forma de hacer las cosas y quería saber si es una forma inteligente de hacerlo.

la idea es tener todos los controladores en funciones relacionadas y luego tener un código mínimo en document.ready anteriormente.

Así, por ejemplo ...

$(document).ready(function(){ 
    page_handler(); // other functions follow 
}); 

function page_handler(){ 
    $('.show_module').click(function(){ 

    }); 
    ... 
} 

Esto parece permitir la organización de los manipuladores relacionadas en funciones y el uso de document.ready más como un inicializador.

Sé que en las funciones y variables de JavaScript están 'izada' antes de código comienza a ejecutar por lo

do_something(); 
function do_something(){ 

} 

obras para esta razón, ya que la función está listo para usar antes hacer_algo() se llama en realidad, a pesar de que aparece antes de la definición de la función real.

Me preguntaba si sucede lo mismo aquí y qué tan "bueno" es esta idea/forma de hacer las cosas.

Respuesta

5

Eso expondrá a todos sus controladores al alcance global (window), lo que puede provocar conflictos.

prefiero hacer esto ...

(function($) { 

// Anything you do in here won't be attached to window. 
var a; 

// If you must have something global, set it explicitly 
window.doSomething = function() { ... } 

// We can also use $ for jQuery here, even if we have used jQuery.noConflict() 
$('body')... 

})(jQuery); 
+0

¿por qué (función ($) {}) (jquery);? y cuando dices 'enfrentamientos' ... ¿puedes darme un ejemplo de lo que quieres decir? – concept47

+0

@ concept47 Quiero decir, si tiene una función 'handleClick()' y su colega también hace una, tendrá un choque. – alex

+0

bien ... Me gusta a dónde vas con esto, pero ¿cómo lidias con un caso en el que tienes un montón de controladores dentro de tu (función ($) {}) (jQuery); ¿llamada? ...cómo los dividirías en funciones por sí mismos ... no dudes en actualizar tu respuesta con eso. – concept47

0

siempre poner las funciones antes el documento listo:

$(document).ready(function() { ... }); 

¿Qué me gustaría escribir en taquigrafía:

$(function() { ... }); 

Lo ideal es mejor tener un solo initialiser como el anterior . This puede ser útil para usted también si desea escribir extensiones/complementos en el contexto de jQuery.

+0

¿Alguna razón en particular por qué? Las funciones se izarán primero de cualquier manera y al poner el documento listo primero, alguien que esté mirando su código sabe que está allí. – concept47

2

Depende de:

¿Quieres volver a utilizar las funciones? - En caso afirmativo, su estructura es una buena manera de hacerlo

¿Cuánto dura su código? - Si su código no es demasiado largo y no lo use en ningún otro lado. Creo que no necesitas dividirlo en funciones.

+1

En ocasiones, para interacciones UI realmente complejas, puede obtener muchos controladores que también son largos, por lo que, aunque algunas de las funciones no se vuelvan a utilizar, parece una forma más sencilla de organizar el código. – concept47

Cuestiones relacionadas