Conflitto librerie Jquery e Prototype

Può capitare di dover utilizzare entrambe le librerie indicate nel titolo del post ma di visualizzare il seguente errore js:

Error: element.dispatchEvent is not a function

Questo errore si verifica perchè entrambe le librerie utilizzano il carattere dollaro ($) per richiamare l’id di un div.

Per la risoluzione dell’errore e per far convivere in modo pacifico le due librerie, bisogna definire un namespace per JQuery e così richiamare l’id del div con il namespace.

Dopo la definizione delle librerie di jquery e prototype, in namespace viene definito: var $j = jQuery.noConflict();. Viene richiamata una funzione speciale di jquery. Da quel momento in avanti, si utilizzerà il namespace ($j) per far riferimento agli id dei div utilizzati da jquery e si utilizzerà il $ classico per richiamare gli id dei div per prototype.

Di seguito il link alla documentazione ufficiale di jquery:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

Posted by admin on febbraio 14th, 2010 | 3 Comments » | Javascript | RSS 2.0

3 Responses to “Conflitto librerie Jquery e Prototype”

  1. alessio scrive:

    gentile ale scusami se mi per metto di scriverti ma

    io ho il problema far coesistere due java script… inserendo le varianti a $ il tool la riconosce ma cmq non fa l’effetto desiderato ti allego il codice…HELP MEEEEEEEEEE

    var JQ = jQuery.noConflict();
    // Usa jQuery con $j(…)
    $j(document).ready(function(){
    $j(“#foto”).show(“slow”);
    });
    // Codice di una libreria con $(…)
    // …

    /* */
    function MM_goToURL() { //v3.0
    var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
    for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
    }

    Alessio Sgroi
    Graphic Designer – Public Relations
    info&reservation
    ph. +39 348.09.89.145
    mail. sgroi.a@hotmail.it

  2. admin scrive:

    Ciao Alessio,
    il problema dipende dal fatto che la dichiarazione della variabile per evitare il conflitto è sbagliata:

    var $JQ = jQuery.noConflict();

    Successivamente devi usare la variabile $JQ al posto di $j:

    $JQ(document).ready(function(){
    $JQ(“#foto”).show(“slow”);
    });

    Prova e fammi sapere.
    Alessandro.

Leave a Reply