2011-11-23 12 views
8

La documentación dice que se puede usar $ .noConflict() así:de jQuery: Es sólo una idea rápida

jQuery.noConflict(); 
(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 
// other code using $ as an alias to the other library 

También establece que llamar devuelve una instancia del objeto jQuery, por lo que podía hacer esto :

jQuery.noConflict()(function(){ 
    // code using jQuery 
}); 
// other code using $ as an alias to the other library 

Sin embargo, ¿esta combinación es válida?

(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery.noConflict()); 
// other code using $ as an alias to the other library 

Si es así, ¿hay alguna razón para no hacerlo de esta manera? Y también (si funciona), ¿por qué no utilizar siempre este método para garantizar que dentro de nuestro cierre, $ == jQuery?

+2

El único inconveniente que veo es que si tienes varios bloques así, estarías innecesariamente llamando 'jQuery.noConflict()' más de una vez. Es cierto que eso no es un inconveniente muy significativo. – Wiseguy

+0

@Wiseguy Sí, creo que lo harías en el primer cierre, de lo contrario, es un desperdicio. – JesseBuesking

+0

Entonces tendrías que hacer un seguimiento de qué bloque es el primero cargado. ¿Qué sucede si luego agrega un bloque/incluye un archivo .js encima del primero anterior? También me gustaría tener ' 'en la parte superior y simplemente use' (función ($) {}) (jQuery) 'en todo. Básicamente se reduce a preferencia personal, supongo. – Wiseguy

Respuesta

5

El último método funciona igual - jQuery.noConflict() devuelve el objeto jQuery, que se pasa como el argumento $ a la función.

No veo una razón para no hacerlo de esa manera y lo preferiría a los otros métodos.

5

No veo por qué no desde jQuery.noConflictreturns el objeto jQuery y se evalúa antes de llamar a la función.

Cuestiones relacionadas