10
votes

JQuery Conflit avec une autre bibliothèque de jQuery

J'utilise jQuery pour un module. Mon modèle Joomla a un menu JQuery intégré. Ils sont donc en conflit entre eux.

Y a-t-il un moyen de résoudre ce problème. Suite au code de script du module xxx


0 commentaires

5 Réponses :


2
votes

ESSAYEZ

var J = jQuery.noConflict();


3 commentaires

Cette réponse n'est pas assez bonne. Vous devez spécifier quelle bibliothèque vous souhaitez repousser pour utiliser "J". Écrire cela au mauvais endroit peut résulter de différents résultats.


Je ne sais pas pourquoi tu veux dire. Explique.


De quoi vient-il de la "jquery"? Comment puis-je charger (une version spécifique de) jQuery sans espaces de noms polluants?



1
votes

ESSAYER

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        var container = jQuery('div.sliderGallery');
         var ul = jQuery('ul', container);

         var itemsWidth = ul.innerWidth() - container.outerWidth();
         jQuery.noConflict();
         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>


1 commentaires

Je copie votre code et collez-le dans mon fichier, mais cela ne change rien. Dois-je faire autre chose?



4
votes

Ce que vous devez faire pour résoudre votre problème est une fonction de jQuery non-alias et l'affecter à un autre nom de variable (rappelez-vous: les variables peuvent être des fonctions). Vous devez utiliser le jquery.noconflic () fonction à un-alias the $ () fonction. Ici un pour le faire: xxx

Maintenant, lorsque vous chargez votre version, il prendra sur les espaces de noms JQuery et $ , mais vous aurez toujours le Autre référence à la fonction JQuery de Joomla si vous en avez besoin. Pour réintérer, le flux de base est le suivant:

  1. Chargez la jQuery de Joomla
  2. Exécutez le code dépendant de JQUERY'S JOOMLA
  3. Déplacez Joomla JQuery dans un autre espace de noms
  4. chargez votre jQuery
  5. Exécutez votre code à l'aide de $ ()

1 commentaires

"Move Joomla JQuery dans un autre espace de noms" - pas une si bonne idée, car cela pourrait courir quelque part plus tard et rechercher l'espace nominal ancien, à la place, vous devez renommer votre nouvelle jQuery à la place de J $.



0
votes

Voulez-vous dire que votre joomla a chargé 2 types de jQuery en même temps? 1er votre menu Load JQuery et puis votre module charge jQuery?

Voici les solutions: Dans les modèles Joomla, nous pouvons remplacer les vues du module ou du composant (je suppose que vous devez utiliser Joomla 1.5.x Droite?)

  1. dans vos modèles Créez un répertoire appelé HTML / Par exemple: Modèles / Yourtemplate / HTML /

  2. Copier le fichier de modules / mod_yourmenu / tmpl /.* dans votre modèle HTML (Modèles / Yourtemplate / HTML / MOD_YOURMENU /) -> * Vous n'avez pas besoin d'ajouter TMPL / *

  3. Modifiez les fichiers PHP à l'intérieur et supprimez tout étiquette qui charge jQuery

  4. faire l'étape 1-3 pour les modules utilisant JQuery.

  5. Modifiez votre modèle, Mettez la balise à charger la dernière version de JQuery.

    Cela devrait fonctionner maintenant :)


1 commentaires

HM - Cela pourrait fonctionner, mais si vous voulez utiliser ce module sur de nombreux sites. Je dois faire ces étapes à chaque fois. Connaissez-vous une autre solution?



0
votes

Juste pour envelopper votre script JQ dans une fonction auto-invoquant.

(function($){
   $(document).ready(function(){

      $('div').click( function(){ alert('ding'); });

   });
})(jQuery);


0 commentaires