|
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>
|
Commenti
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.
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.
Per il resto non ho notato problemi.
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
RSS feed dei commenti di questo post.