Archive for enero, 2011
Envolver scripts de jQuery contra conflictos

credit: jwalsh
Este es un simple tip para evitar conflictos entre jQuery con otras librerías javascript.
Cuando utilizas jQuery nórmalmente se suele añadir todo el código dentro de la función:
$(document).ready(function() {
// tus scripts
});
Y se utiliza el comodín “$” como sustituto enriquecido del “getElementById“.
El problema surge cuando después de escribir todo el código necesario te encuentras que debes añadir otra librería, como script.aculo.us, mootools, o Prototype, y debes sustituir todos los signos “$” por otro diferente.
La manera que hasta ahora utilizaba era colocando dentro del $(document).ready(function(){}); lo siguiente:
var loquesea = jQuery.noConflict();
Y donde antes escribía $("#contenido").fadeIn(); debía poner loquesea("#contenido").fadeIn();
Esto no tendría mayor problema salvo que a veces el código sea muy largo o añadas scripts de terceros que no terminas de controlar del todo.
Pues bien, el remedio es rápido y fácil. Hay que envolver la función $(document).ready(function() {}); entre (function($){ y })(jQuery); quedando el script así:
(function($){
$(document).ready(function() {
// scripts
});
})(jQuery);
Sin olvidar meterlo todo dentro de las etiquetas <script type="text/javascript">...</script>
Extraido del slide JavaScript in Drupal 7: What developers need to know.