www.zambros.it

 

mantis_logo_button


Tuesday 07th of February 2012

Articoli Tecnici

Clicca qui per votare

Creazione siti web statici e dinamici in modo personalizzato con l'eventuale giornata di formazione per la gestione AUTONOMA dei contenuti!
JQuery - Mootools con no conflict PDF Stampa E-mail
Venerdì 05 Marzo 2010 20:51

Alcune volte per necessità o per forza maggiore c'è il bisogno di utilizzare più framework javascript.

Un esempio molto comune è l'utilizzo di mootools e di jquery.

 


Per esempio sul CMS Joomla è presente la libreria mootools, se dobbiamo utilizzare effetti di jquery iniziamo ad avere dei problemi.

La causa principale è che entrambi utilizzano il carattere $ come funzione.

JQuery a differenza degli altri framework ha creato il sistema per far condividere le librerie.

 

SOVRASCRIVERE LA FUNZIONE $ USANDO

JQUERY.NOCONFLICT()

Un metodo è quello di  sovrascrivere di default chiamando jQuery.noConflict(). Basterà quindi usare JQuery al posto di $, le altre librerie useranno tranquillamente la funzione $.Per esempio:

 <html>
 <head>
   <script src="/prototype.js"></script>
   <script src="/jquery.js"></script>
   <script>
     jQuery.noConflict();
     
     // Usa jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });
     
     // Usa Prototypecon$(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

Con questo metodo dovrai fare attenzione a usare JQuery al posto di $ nelle chiamate di JQuery.

Esiste un altro modo per non creare conflitti. Se vuoi essere veramente sicuro che non ci siano conflitti basterà cambiare la variabile $ con per esempio $j come nell'esempio che segue:

 <html>
 <head>
   <script src="/prototype.js"></script>
   <script src="/jquery.js"></script>
   <script>
     var $j = jQuery.noConflict();
     
     // Usa jQuery via $j(...)
     $j(document).ready(function(){
       $j("div").hide();
     });
     
     // Usa Prototype con $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

Ovviamente puoi definire qualsiasi nome come  jq, $J, awesomeQuery, qualsiasi cosa tu voglia. Ovvio che più corto è, meno si deve scrivere.

Infine se non desideri definire nomi alternativi al nome JQuery e vuoi davvero usare il valore $ e non preoccuparti che le altre librerie usino $ esiste un'altra soluzione. Questa è la soluzione più usata per la compatibilità tra librerie diverse, inoltre c'è veramente poco codice da scrivere. Esempio:

 <html>
 <head>
   <script src="/prototype.js"></script>
   <script src="/jquery.js"></script>
   <script>
     jQuery.noConflict();
     
     // Inserisci tutto il tuo codice JQuery
     jQuery(document).ready(function($){
       // jQuery userà $
       $("div").hide();
     });
     
     // Usa Prototype con $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

 

INCLUDERE JQUERY PRIMA DELLE ALTRE LIBRERIE

Se includi JQuery prima delle altre librerie, dovresti usare "jQuery" quando vuoi utilizzare jQuery, e la "$" rimane valida per le altre librerie. Così non è necessario creare la sovrascrittura usando la chiamata "jQuery.noConflict()".

 <html>
 <head>
   <script src="/jquery.js"></script>
   <script src="/prototype.js"></script>
   <script>
     // Usa jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });
     
     // Usa Prototype with $(...), etc.
     $('someid').hide();
   </script>
 </head>
 <body></body>
 </html>

Ultimo aggiornamento Sabato 17 Luglio 2010 10:28
 

Commenti  

 
0 #5 RE: JQuery - Mootools con no conflictGiovanni 2011-05-31 14:15
Ottimo tutorial, complimenti e grazie! ;-)
Citazione
 
 
0 #4 Administrator 2010-04-19 11:45
Ciao Francesco,
sicuramente devi agire sul codice della pagina, ora non so cosa tu voglia implementare ma se è un effetto che si riproduce su ogni pagina, allora dovrai modificare index.php. Se invece l'effetto è del singolo articolo usando il secondo metodo sopra citato (ovvero rinominare $ con $j per esempio).
Il codice sopra riportato è ovviamente di esempio ma dovresti tranquillamente riuscire ad implementarlo.
Se mi dai maggiori dettagli sul codice magari posso aiutarti meglio.
Citazione
 
 
0 #3 Francesco 2010-04-19 10:51
Ciao. Ho letto con attenzione questo articolo. Credo di aver questo problema, almeno così dice l'assistenza che mi ha fornito il template. Io sto costruendo un sito con joomla 1.5. A quanto sembra il conflitto è tra Jquery e mootools. Ti chiedo:
1) devo indicare il codice de teriportato nel file index.php del mio template tra i tag e ?
2) Devo modificare qualche dato rispetto al tuo esempio se si tratta di conflitto con Mootools?
Vorrei utilizzare il secondo metodo. Mi puoi aiutare?
Grazie, ciao.
Citazione
 
 
0 #2 Administrator 2010-04-06 12:28
Ho visto la pagina. Lo slideshow dovrebbe partire in automatico?
Per il resto non ho notato problemi.
Citazione
 
 
0 #1 Maddalena Pisani 2010-04-01 10:42
ciao.
ho letto il tuo post!
ho un problema simile.
uno slideshow e il lightbox che nn vanno d'accordo.
ho provato a seguire le istruzione, ma nada!
nn funziona!
mi potresti dare una mano?
http://www.studiomadesign.net/free/collezione.htm
grazie
ciao
mad
Citazione
 

Aggiungi commento


Codice di sicurezza
Aggiorna

Primo su Google

zetawriter_200
Il primo gestionale SEO online per il posizionamento su Google
Visita www.zetawriter.com

Richiedi subito il tuo preventivo Gratuito al 338.8835425


Free Software

DadoPubblicato online il simulatore del lancio di dadi. La versione è flash cioè non salva i dati.
Prossimamente ci sarà una versione dove si potranno visualizzare tutti i tiri eseguiti!
L'applicazione si trova a questo link.


Twitter



P.IVA: 03864690239 - CF: ZMBMTT82A25A459W - Cell 338 8835425 - info@zambros.it