2010-10-25 6 views
1

Je travaille sur du JavaScript qui sera intégré à d'autres sites (pensez à Google Analytics ou AdSense). Il y a du JS hardcore en cours de réalisation - requêtes AJAX, animations, JSON (P). J'ai écrit le prototype en utilisant jQuery, et je veux vraiment continuer à l'utiliser, mais cela pourrait poser un problème s'il est intégré sur les autres sites si jQuery est installé - probablement même une version différente.JS embarqué sur d'autres sites - comment puis-je utiliser jQuery sans vider d'autres installations jQuery?

Existe-t-il un bon moyen de contourner ce problème? La meilleure solution que j'ai jusqu'à maintenant est de simplement remplacer toutes les occurrences de jQuery par kQuery, et $ par $kQuery, donc il n'y a pas de conflit de nommage. Aucune suggestion? Comment puis-je être aussi compatible que possible avec leur JavaScript existant?

Répondre

3

Il existe un mode pour jQuery; c'est ce dont tu as besoin. jQuery enregistre les valeurs d'origine de window.jQuery et window.$ en tant que copie locale avant de les écraser.

Ainsi, une solution est:

var kQuery = $kQuery = $.noConflict(true); 

qui remplace window.jQuery et window.$ avec les valeurs d'origine et renvoie une référence à jQuery se


Et si vous ne voulez pas changer votre code du tout, juste envelopper dans:

(function($){ 
    // Your code with $ 
})($.noConflict(true)); 
0
this might cause a problem when embedded on the other sites if they also have jQuery installed -- probably even a different version 

Je ne pense pas que ce soit vrai. Je n'ai eu aucun problème à basculer entre au moins 3 versions différentes de jQuery, il est backwards compatible

+0

Je pourrais utiliser de nouvelles fonctionnalités (par exemple. JSONP) qui ne sont pas disponibles dans les versions précédentes. –