2010-05-14 10 views
0

J'ai utilisé Mootools 1.2.4 comme mon framework JS de prédilection. J'ai ajouté Checkout par Amazon à l'une de mes pages, et ils injectent jQuery 1.2.6 dans la page et gâchent ma fonction dollar (entre autres choses).Comment puis-je faire en sorte que jquery & mootools joue bien?

J'ai le contrôle sur Mootools, mais pas sur jQuery. Je préfèrerais ne pas réécrire mon code existant pour accueillir jQuery puisque Checkout by Amazon était un élément après-coup et plug-in.

Toute idée ou suggestion est recommandée. Merci!

Répondre

2

Jetez un oeil à jQuery.noConflict(). S'ils ont écrit leur code correctement, il ne comptera pas $ être disponible dans la portée globale.

Pour votre propre code, vous pouvez le renforcer contre ce genre de problème en enveloppant tout votre code dans une fermeture. Je ne sais pas ce que le nom complet de la fonction de prototype $ est, mais je suppose que c'est Prototype:

alert ($ instanceof jQuery); // true 

(function($) { 
    alert ($ instanceof Prototype); // true 
    // put all your Prototype code here 

})(Prototype); 

modifier: uhhh, remplacer « Prototype » avec « Mootools » ... cerveau ne travaille aujourd'hui

+0

Merci beaucoup. Le noConflict était exactement ce dont j'avais besoin. En ce qui concerne l'encapsulation de la fonction, j'écrirai mon code pour l'accommoder. Pour info l'espace de noms MooTools est document.id Merci encore! – Vic

+0

vous n'avez pas besoin de noConflict jquery si vous namespace mootools (qui ne touchera pas $ si jquery l'a automatiquement), seulement un d'entre eux doit vraiment rester en dehors de $, pas les deux en même temps :) –