Conflito entre prototype.js e jquery.js
Bom, estou com o tempo curto aqui no trabalho, mas deixo esse post aqui para alertá-los sobre possíveis problemas que vocês podem encontrar usando aplicações web que usem o prototype.js (como o meu querido Lightbox ) junto com o meu também querido jquery.js. Por estar com pouco tempo, infelizmente não poderei me alongar nos detalhes dessas ferramentas que acho muito úteis e indispensáveis.
Mas enfim, se você chegou até aqui através do nosso amigo google, deve ser porque você está passando por esse problema agora
Vamos direto ao ponto. O jQuery possui um modo ‘noConflict’ para casos em que haja conflito com declarações de outras bibliotecas. Mas isso você já deve ter notado né?
Para resolver isso, carregue o jQuery primeiro, e faça:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
Isso deverá vir antes de carregar qualquer outra biblioteca de scripts. A partir daí, você pode carregar os demais js’s, inclusive o prototype.js. Porém, não é só isso, mas calma, não vai ter nada de muito difícil. Nas chamadas ao jquery.js que usem o $, substitua esse por jQuery. Um exemplo é:
$("#conquistapg").load(url);
// Vira:
jQuery("#conquistapg").load(url);
Pronto! Agora é só isso mesmo!
Espero ter ajudado
Mais pra frente vou me alongar mais nessas bibliotecas bacanas.
[]‘s
Sahb,.
Você pode faer assim também:
var $j = jQuery.noConflict();
Agora é só usar:
$j(“#conquistapg”).load(url);
Muito foda o post, nao tive problemas ainda mas resolvi dar uma olhada primeiro.
Nossa, muito obrigada, isso ajudou muito !!! Já estava ficando triste de ter que desistir do jQuery ou do prototype na minha página que tava dando conflito.
Valeu!
às ordens %)
Bom ver que está sendo útil
Amigo, ja tava ficado louco com esse problema! Muito obrigado!
Bom saber que ajudou! Abraço!
Exemplo: Tenho o jQuery e o prototype; coloco a linha “jQuery.noConflict();” e mudo os “$” em quais JS??? em todos, menos o jQuery?
Você muda nas chamadas que você usa o jquery, ou seja, nos seus javascripts que o usam. Não é para alterar o jquery.js nem nada. Ok?
Isso me ajudou muito.
Vlw
Excelente tutorial.
fiz como vc falou.. mas nao abre de forma alguma nos IE
este ai é meu codigo:
<!–
jQuery(document).ready(function(){
// Hide the site-meta panel
jQuery(‘#subacordion’).hide();
jQuery(‘#subacordion1′).hide();
jQuery(‘#subacordion1_1′).hide();
jQuery(‘#subacordion2′).hide();
jQuery(‘#subacordion3′).hide();
// Toggle site-meta panel visibilty and class when handle is clicked
jQuery(‘#empresa’).click(function() {
jQuery(‘#subacordion’).slideToggle(50);
jQuery(this).toggleClass(“active”);
jQuery(‘#subacordion1′).hide();
jQuery(‘#subacordion1_1′).hide();
jQuery(‘#subacordion2′).hide();
jQuery(‘#subacordion3′).hide();;
return false
} );
jQuery(‘#produtos’).click(function() {
jQuery(‘#subacordion1′).slideToggle(50);
jQuery(this).toggleClass(“active”);
jQuery(‘#subacordion’).hide();
jQuery(‘#subacordion1_1′).hide();
jQuery(‘#subacordion2′).hide();
jQuery(‘#subacordion3′).hide();;
return false;
} );
jQuery(‘#aeroporto’).click(function() {
jQuery(‘#subacordion1_1′).slideToggle(50);
jQuery(this).toggleClass(“active”);
return false;
} );
jQuery(‘#redes_digitais’).click(function() {
jQuery(‘#subacordion2′).slideToggle(50);
jQuery(this).toggleClass(“active”);
jQuery(‘#subacordion’).hide();
jQuery(‘#subacordion1′).hide();
jQuery(‘#subacordion3′).hide();;
return false;
} );
jQuery(‘#solucoes_interativas’).click(function() {
jQuery(‘#subacordion3′).slideToggle(50);
jQuery(this).toggleClass(“active”);
jQuery(‘#subacordion’).hide();
jQuery(‘#subacordion1_1′).hide();
jQuery(‘#subacordion2′).hide();
jQuery(‘#subacordion1′).hide();;
return false;
} );
});
Cara parabêns pela solução. Estou desenvolvendo um projeto (site) e me deparei com esse problema. Sua solução solucional meu problema. Mesmo estando corrido aqui, fiz questão de parar um minuto para parabenizar e agradecer o compartilhamento do conhecimento! Vlw.
Parabéns!!! Muito boa a dica..
Show de bola!!!
Funcionou perfeitamente!!!
Massa!!! Funfou aqui!!!
Cara show de bola, fiz como explicado e deu tudo certo.
Nossa, era o que eu estava precisando!
Mas ainda estou com um problema, estou usando 3 elementos que utilizam jQuery, dois deles estão funcionando, o S3Slider e o Lightbox, mas o menu Fancy Navagation da conflito e fica como um menu padrão sem efeito.
Gostaria de saber se tem uma solução para isso, pois já tentei de tudo e até agora nada
Sensacional! Me salvou colega.
Você salvou a minha vida neste momento, obrigada =D
Você salvou minha vida agora! Muito obrigado!
eu não estou conseguindo resolver o meu problema – gostaria da ajuda dos amigos tentei o que foi passado acima mas não deu certo.
Olá pessoal gostaria de ajuda de vcs nesse caso
estou fazendo um site em server side include
na pagina index eu coloquei um codigo de jquery jcarousel
está funcionando perfeitamente
porem no menu do lado esquerdo qdo vc clica em
Doces, Salgados ou Outros
vc chama a pagina galeria.php
que tem um outro codigo do jquery que seria o lightbox
só que dai o site vira uma bagunça
o codigo do lightbox tipo que anula o codigo do jquery jcarousel
o carrossel que era para ser horizontal(mostrar 7 fotos) vira vertical (mostra todas as fotos)
eu fiz uns testes na pagina eu galeria . php eu retirei o codigo do lightbox
ai o jquery jcarousel volta ao normal
não dá para usar os dois?
no meu index . php tem esse codigo
$(function(){
$(“.carosel”).jCarouselLite({
btnNext: “.next”,
btnPrev: “.prev”,
visible: 7,
auto: 7500,
speedy: 2000,
align: “center”
})
})
e no meu galeria . php tem esse codigo
o site é esse
sianisalgados.com
vlw pessoal
no index tem esse script acima do function
e na galeria tem esse
vlw pessoal deu certo com o codigo acima sim, eu que tinha cometido um erro.
kara eu fiz o q vcs falaram ae mas mesmo assim ainda nao consegui resolver meu problema, eu estou usando um script q se chama jq-corner.js para arredondar tabelas e to usando o light box, e to tentando carregar os 2 na mesma pagina, por exemplo “fotos” e talz, mas nao da, eu fiz tudo isso ae q vc falo pra fazer, e consigo arredondar as bordas mas as fotos abrem como uma nova pagina e nao no lightbox, o q eu posso fazer? to desesperado… valeu abraços
Bom, se você fez tudo que está no post, inclusive mudar as chamadas $( para jQuery(, ai tem que ver se tem mais algum conflito. Se você tiver o firebug instalado no seu firefox você poderá saber melhor que tipo de erros está tendo, o console do javascript de qualquer navegador vai pelo menos te avisar se o problema está em algum script seu ou se é esse jq-corner (que nunca mexi
) que precisa usar os jQuery(.
Dê uma checada nos erros que você terá uma melhor idéia do que está acontecendo. Se continuar tendo problemas, descreva os erros que tentaremos te ajudar.
Abraço,
Sahb,.
Velho, vc eh o cara!!
Super funcionou!!!
E eu já tava quase desistindo…mas Graças a vc consegui solucionar esse conflito!!
\o/
Muito muito obrigada!!!
=D
Cara, não sei de onde vc saiu, mas valeu a pena visitar seu blog… obrigado!!!
Valeu amigo,
resolveu tbm minha bronca!
abraços
Cara, muito obrigado mesmo!
Fiquei horas e horas tentando resolver e graças a Deus encontrei seu blog e aprendi como solucionar esse problema. Mais uma vez, muito obrigado e parabens pelo blog!
Abraco