Trabalhando com jQuery e MooTools ao mesmo tempo
Hoje estava a melhorar a área de administração para o portal de um cliente que será brevemente lançado, e deparei-me com o problema… Tinha um plugin desenvolvido em jQuery e outro em MooTools que queria ver integrado na mesma página.
Explicação do Porquê do Erro Acontecer
O símbolo ‘$’ é usado como objecto pela jQuery e também pela MooTools, logo existe interferência.
Se chamarmos primeiro a jQuery ela vai correr e criar um objecto chamado ‘$’ com as funções especificas para jQuery, de seguida, chamamos a MooTools que vai criar o seu o objecto também chamado ‘$’ com as funções especificas da MooTools.
A Solução
Depois de alguma pesquisa consegui solucionar o problema e ter os dois a funcionar correctamente no mesmo local, apesar da solução mais vista: jQuery.noConflict(); não funcionar no meu caso.
A solução passou por pegar nos ficheiros de funções jQuery e alterar todos os ‘$’ para ‘jQuery’, porque é a mesma coisa chamar uma função através do objecto ‘$’ quer através do objecto ‘jQuery’, pois o objecto ‘$’ é apenas um shortcut para ‘jQuery’.
Depois a ordem que utilizei para chamar as bibliotecas em si foi a jQuery primeiro e de seguida a MooTools.









Não é necessário substituir $ por jQuery em todo o lado, só nas chamadas “de raíz”, por exemplo, se tiveres:
$(document).ready(function() {
$('#loading').fadeIn('fast');
});
Podes substituir por:
jQuery(document).ready(function($)) {
$('#loading').fadeIn('fast);
});
Pois dentro da função do jQuery o parâmetro que é passado é o próprio jQuery, que, se passares como $, fica com o funcionamento esperado antes do mootools
Twitter: joaoppereira
permalink
Pois, bem visto Bruno, de facto não tinha pensado nisso.
.
Obrigado pelo contributo
Solução perfeita! Muito obrigado pela sua contribuição!
Abraço