Conflit JQuery avec une autre bibliothèque JQuery
J'utilise jquery pour un module. Mon modèle de joomla ont intégré jquery menu. Donc, ils entrent en conflit les uns avec les autres.
Est-il un moyen de résoudre ce problème. Suivant le code de script du module
<script type="text/javascript" charset="utf-8">
window.onload = function () {
var container = jQuery('div.sliderGallery');
var ul = jQuery('ul', container);
var itemsWidth = ul.innerWidth() - container.outerWidth();
jQuery('.slider', container).slider({
min: 0,
max: itemsWidth,
handle: '.handle',
stop: function (event, ui) {
ul.animate({'left' : ui.value * -1},340);
},
slide: function (event, ui) {
ul.css('left', ui.value * -1);
}
});
};
</script>
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Ce que vous devez faire pour résoudre votre problème à l'onu est-alias de la fonction jQuery et de l'attribuer à un autre nom de la variable (rappelez-vous: les variables peuvent être des fonctions). Vous devez utiliser le
jQuery.noConflict()
fonction de l'onu-alias le$()
fonction. Ici, un seul à le faire:Maintenant, lorsque vous chargez votre version, il faudra plus de jQuery et
$
espaces de noms, mais vous aurez encore l'autre référence de Joomla jQuery fonction si vous en avez besoin. Pour réitérer, le flux de base est:$()
essayer
après que l'utilisation de J de la variable au lieu de $ ou jQuery pour votre code personnalisé
essayer
e.g
J'ai mis à jour votre code pour utiliser jQuery pour vérifier document chargé. Détails pour l'utilisation de la noConflict fonction est ici.
avez-vous dire que votre site joomla chargé 2 type de jquery en même temps ?
1er votre menu de chargement de jquery
et puis, votre module de chargement de jquery ?
voici les solutions:
Dans joomla templates, nous pouvons substituant le module ou composant points de vue (je suppose que vous devez être à l'aide de joomla 1.5.x droit?)
dans vos modèles, créez un répertoire appelé html/
par exemple: modèles/yourTemplate/html/
de copier le fichier à partir de modules/mod_yourMenu/tmpl/.* dans votre votre modèle html (templates/yourTemplate/html/mod_yourMenu/) --> * vous n'avez pas besoin d'ajouter tmpl/*
modifier les fichiers php à l'intérieur et supprimer tous
balise de charger jquery
ne l'étape 1 à 3 pour les modules à l'aide de jquery.
modifier votre modèle, mettre de balise pour charger la dernière version de jquery.
il devrait fonctionner maintenant 🙂
Juste pour envelopper votre jq script dans une auto-invocation de la fonction.
Cela crée une portée privée de sorte que vous n'avez pas à vous soucier des collisions. Vous pouvez ignorer tous les uneasyness avec jQuery.noConflict(); solution et vous n'avez pas à renoncer à ce merveilleux $! Je fais cela comme une question de habbit quand je sais qu'il y a d'autres morceaux de code au travail (par exemple, tous les systèmes cms) - même si une extension est ajoutée après mes tests, il ne faut pas briser mon jQuery.
Il y a une excellente vue d'ensemble dans le jQuery livre de recettes (http://listic.ru/jQuery_Cookbook.pdf - chapitre 1.17). Si c'est assez bon pour Resig, j'imagine que ça va fonctionner pour moi!