Fancybox n'est pas une fonction

Bonjour, j'utilise la fonction jQuery plugin fancybox pour afficher les cartes bing lorsque quelqu'un entre dans une adresse dans une zone de texte et frappe le bouton de soumission à côté d'elle. Et une fancybox est chargée et une carte pour cette adresse est affichée. Cela fonctionne bien avec ma demande, mais le problème est que ça ne fonctionne que bien sur une page et, l'autre, quand je la charge, ça me donne une erreur en disant que fancybox n'est pas une fonction. Je vois cette erreur dans la console d'erreur et dans la console Firebug. Je ne suis pas sûr de savoir quel pourrait être le problème. Le même code fonctionne dans une autre page, mais ce n'est pas sur celui-ci?

$("<a href=\"#showmap\">Map</a>").fancybox is not a function 

Je suis certain que ce n'est pas un problème de réutilisation. Mais quand je teste pour voir si les fichiers originaux de fancybox ont été chargés, ils sont chargés avec le dom, donc il pourrait ne pas être un problème réel. Mais je suis incapable de comprendre ce qui pourrait être le problème.

C'est mon code

Abbr: est juste un bit de texte. J'ai différentes divs en fonction de ce que l'utilisateur sélectionne. Et chaque div aurait ses propres contrôles, qui commenceraient avec ce texte et sont ajoutés à leurs propres définitions telles que les résolutions de carte, décValLat, DecValLon etc.

Ex: abbr >> est et ensuite les ids seraient représentations de l'est, eastdecValLat, eastdecValLon etc.

 function showMapFancybox(abbr){ var abbr; $('#'+abbr+'mapresults').hide(); $('<a href="#showmap">Map</a>').fancybox({ overlayShow: true, onClosed: function() { $('#'+abbr+'mapresults').show(); map_latdec = $('#decValLat').attr('value'); map_longdec = $('#decValLon').attr('value'); map_latdeg = $('#degValLat').attr('value'); map_longdeg = $('#degValLon').attr('value'); $('#'+abbr+'decValLatsub').val(map_latdec); $('#'+abbr+'decValLonsub').val(map_longdec); $('#'+abbr+'degValLatsub').val(map_latdeg+'N'); $('#'+abbr+'degValLonsub').val(map_longdeg+'W'); } }).click(); }; 

J'ai déjà eu ce type d'erreurs car je recharge jQuery après l'importation du plugin, vérifiez que vous ne repérez pas jquery par erreur (parfois inclus dans un package comme les outils jQuery).

Vous devez charger les extensions comme easing.js et mousewheel.js AVANT le plugin principal de fancybox. C'était étrange, mais cela a résolu le problème.

Si "fancybox" en tant que fonction n'existe pas, il est probable que la source jQuery ou la source du plugin ne se chargent pas dans votre page. Assurez-vous que le cheminement, les noms de fichier et l'extension sont corrects.

EDIT: assurez-vous que vous liez à jQuery Source avant de lier à tous les plugins. Si un plugin est chargé dans votre HTML avant jQuery, le plugin échoue.

J'ai juste eu ce problème, il semble que certaines versions de jQuery ne sont pas compatibles avec les versions de FancyBox, par exemple Fancybox 1.3.4 est buggy avec jQuery versions inférieures à 1.7 et ne fonctionne pas sur une version supérieure à 1.8.

Dans mon cas, c'était jQuery.noConflict (); Rang dans un autre plugin jQuery … quand j'ai supprimé tout a commencé à fonctionner.

Si vous utilisez un plugin qui inclut JQuery dans votre étiquette d'en-tête, ce problème peut se produire. J'ai récemment ajouté 'TheThe Slider' à mon blog, tous mes FancyBoxes ont cessé de fonctionner. Il existe cependant des corrections faciles pour cette situation. Essentiellement, accédez au répertoire du plugin, recherchez l'appel vers jquery et rendez-le conditionnel. Si vous souhaitez voir ma mise en œuvre, j'ai fait un blog à ce sujet avec la capture d'écran.

J'ai eu ce problème dans mon site Web WordPress et j'ai trouvé le problème qui se passait en raison de fancybox.js présentant deux fois dans le code à partir de deux plugins que j'ai installés. Vérifiez donc votre code et assurez-vous de charger à partir d'une seule source.

Solutions possibles:

1) avez-vous déjà chargé jQuery? Si ce n'est pas le cas, chargez-le avant que les commandes $ commencent.

2) Vérifiez, vous chargez probablement jquery library (.js) plusieurs fois pendant la page. Essayez de charger un seul.

3) À la fin du fichier, vous pouvez exécuter cette commande javascript: $ = jQuery.noConflict(); Et cela pourrait résoudre. Sinon, utilisez n'importe quel mot jQuery au lieu de $ , et cela fonctionnera aussi.