Estou fazendo alguns testes com o jQuery para utilizá-lo em um sistema interno para a empresa onde trabalho, porém como utilizamos o framework “ajaxCFC” e o mesmo usa a lib Prototype, tive alguns problemas de compatibilidade com o jQuery e o Prototype.

Tanto o Prototype quanto o jQuery utilizam um atalho global para suas funções, ou seja “$” (cifrão), então quando faço o uso de $(“campo“) ele irá chamar a função da biblioteca que for carregada por último, ex.:

<script src=”prototype.js”></script>
<script src=”jquery.js”></script>

Neste caso ele usaria as funções da lib jQuery.

[ Problema ]
Vários códigos fazendo uso do Prototype, ex.: $(“campo_select”).value;

Neste caso ocorrerá um erro (valor da função seria undefined), uma vez que a sintaxe correta do jQuery é $(“#campo_select”).val();

[ Solução ]
Para usar o jQuery com qualquer outra biblioteca javascript, podemos setar um namespace/alias para ele, simplemesmente usando a função jQuery.noConflict(), dessa forma:

<script src=”prototype.js”></script>
<script src=”jquery.js”></script>
<script>
   var $j = jQuery.noConflict();

  // pegar o valor do select usando o jQuery
  $j(“#campo_select”).val();

  // pegar o valor do select usando o Prototype
  $(“campo_select”).value;
</script>

*Mais informações aqui.

Pronto! Simples, rápido e indolor.