Il contenuto di questa pagina richiede una nuova versione di Adobe Flash Player.

Scarica Adobe Flash Player

     jQuery e Mootools insieme con no conflict
       
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>
Fonte dell'articolo

© 2018 - Tutti i diritti sono riservati