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
|