2009-11-03 5 views
2

Explication: J'ai peu d'objets et je les déclare dans $ (document) .ready(). POURQUOI? parce que dans mille objets j'ai beaucoup de méthodes jquery $ (..), évidemment, ils peuvent travailler à l'extérieur aussi, mais quand j'inclus mootool, alors il cesse de fonctionner. J'ai essayé noConflict et d'autres choses, rien ne fonctionne, seulement si je change le $() à jQuery() ou à $ j() .. et je ne veux pas changer pour mes 20 fichiers et plus de 2000 lignes pour chaque fichier. de toute façon déclarer mes objets dans $ (document) .ready(). les a fait fonctionner très bien.

Ma question est la suivante: si je déclare tous ces objets à l'intérieur du $ (document) méthode de .ready(), serait-il mon site lent? ou est-ce que cela ralentirait le côté client? C'est la seule préoccupation dans mon esprit.

Répondre

4

Je ne vois pas comment cela ralentirait votre site. En les déclarant dans le $().ready vous limitez simplement la portée de vos déclarations à cette fonction $().ready particulière, ainsi ils ne seront pas disponibles dans les limites de autres fonctions prêt sur la même page - qui ne devrait pas vraiment être un dérangez si votre application est bien conçue et vous avez collé à un par page. Oh, et vos déclarations n'auront certainement pas été analysées jusqu'à ce que le DOM soit complètement chargé (comme vous le savez, $().ready ne s'exécute que lorsque le DOM est chargé), mais cela ne devrait pas poser de problème Je ne les utilise que dans une fonction prête (du moins j'espère).

Avez-vous vraiment besoin de deux bibliothèques? Si vous n'utilisez qu'une ou deux petites fonctionnalités de l'une de ces bibliothèques, vous risquez d'imiter ce comportement en utilisant celui que vous utilisez le plus. Si vous pouvez éventuellement faire cela, il rendra votre vie donc beaucoup plus simple.

+1

Je suis d'accord avec cela en ce sens que je ne vois pas comment cela pourrait (ou devrait) faire ralentir la page, je le fais moi-même tout le temps, parfois juste pour délimiter et garder l'espace global Cependant, malgré ce que je pense, je pense que le seul moyen de se sentir à l'aise est de le tester et de rassembler les mesures réelles. Je fais ça... – Funka

+0

une seule question est à gauche, que j'ai besoin de savoir. j'ai besoin de mes fonctions dans une autre méthode $(). prête aussi, comment puis-je la rendre compatible afin qu'elle fonctionne sur les deux endroits, fonctionne maintenant comme @ karim79 défini – Basit

+1

@basit - La seule façon est de les déclarer en dehors du document .ready, que vous avez déjà déclaré que vous * ne pouvez pas * faire à cause de mootools, donc honnêtement, je ne sais pas quoi suggérer, alors je pense que quelque chose doit donner :)! – karim79

-1

simplement déclarer jQuery.noConflict avant que la demande document.ready, puis alias la méthode jQuery pour $ au sein de la document.ready ...

jQuery.noConflict(); 
jQuery(document).ready(function($){ 

}); 
+0

lire à nouveau la question pls, il demande quelque chose d'autre :) – Basit

+0

Désolé, non, il ne ralentirait rien ... – CodeJoust

1

Faire tout jQuery.ready ne sera pas ralentir votre site.

En tant que solution de rechange, vous pouvez remplacer $ avec jQuery dans tous votre code jQuery, ou vous pouvez l'envelopper dans une fonction comme ceci:

(function($) { 
    $('whatever').something(); 
})(jQuery); 

Ce code fait une fonction qui prend un paremeter appelé $ et appelle cette fonction avec l'objet jQuery. Le paramètre $ masquera l'objet global $ de mootools dans le cadre de la fonction, vous permettant d'écrire du code jQuery normal à l'intérieur de la fonction.

+0

merci, mais si vous lisez tout mon fil .. je sais (fonction et remplacement de $ à jQuery ..: P – Basit

Questions connexes