Pular para o conteúdo principal

Conflitos entre prototype e jquery

Durante o desenvolvimento do sistema em PHP para o projeto do CTI usei biblioteca jQuery junto com o plugin para validar campos do formulário.  Até este momento tudo estava funcionando perfeitamente.  Ao adicionar o framework javascript Prototype para criar um sistema de busca dinâmica (Ajax), as funções realizadas pelo jQuery não funcionavam .

Pesquisando uma solução descobri que o jQuery possui uma função jQuery.noConflict(), para evitar conflito com outros códigos javascript. Isto ocorre por que outras bibliotecas costuma usar a sintaxe $ ou $() para chamar suas funcionalidades.

A solução é:

O biblioteca JQuery deve ser carregado antes de todas as outras e deve ser chamada a função jQuery.noConflict().

<script type="text/javascript">
    jQuery.noConflict();
</ script >

Depois basta substituir o cifrão $ por jQuery.

Antes:
var validator = $("#signupform").validate({
    groups: {
        birthdate: "birthdateDay birthdateMonth birthdateYear",
    }
});

Depois:
var validator = jQuery("#signupform").validate({
    groups: {
        birthdate: "birthdateDay birthdateMonth birthdateYear",
    }
});

Ou se desejar economizar alguns caracteres.

<script type="text/javascript">
    var $e = jQuery.noConflict();
</script>

var validator = $e("#signupform").validate({
    groups: {
        birthdate: "birthdateDay birthdateMonth birthdateYear",
    }
});

Comentários