2011-11-09 5 views
0

J'ai une page html qui ajoute une référence à la bibliothèque jquery. J'ai alors une fenêtre de dialogue qui charge à nouveau la bibliothèque jquery.'Impossible de trouver' erreur de fonction

À ce stade, j'ai un plugin jquery # 1 qui appelle un autre plugin jquery # 2 et j'obtiens une erreur comme jquery pluging 2 ne peut être trouvé.

Si je supprime une référence à la première bibliothèque jquery, les choses semblent fonctionner. Pourquoi ajouter une 2ème référence à jquery (pour le dialogue) provoque ce problème? Comment puis-je résoudre?

Mon plug-in (dans le fichier externe est défini comme)

(function ($) { 

    $.fn.finder = function (optionsIn) { 
       //do stuff 
       .. 
       //2nd call to plugin this is where i get the error 
       $(this).watermark('watermark'); 

    }; 
})(jQuery); 

Le plugin fonctionne très bien sur une simple page html si j'utilise le plug-in sur une boîte de dialogue, il a des problèmes avec les multiples références à la bibliothèque jquery .

Des idées?

J'utilise le plugin filigrane https://github.com/fabrikagency/fa-watermark avec une utilisation typique comme $('input').watermark('Enter your name.','my-custom-class');

+0

Afficher la définition 'watermark'. De plus, dans une fonction $ .fn.func_name', 'this' est un objet jQuery. Donc, ne l'enveloppez pas dans un autre objet jQuery. –

+0

Oui, l'utilisation de $ (this) semble correcte si vous n'utilisez pas le plugin dans une boîte de dialogue (souvenez-vous de l'implémentation du dialogue, les références principales de la bibliothèque jquery et de la boîte de dialogue le font aussi). références à jquery pourquoi cela serait-il? – David

+1

Vous devez inclure le plugin watermark avant d'inclure votre propre fichier script externe contenant 'finder'. –

Répondre

0

Merci pour l'entrée. Cela m'a fait regarder très attentivement l'ordre des objets chargés. Il semble que le problème était que mon plugin était chargé avant jquery. Cela répond aussi pourquoi si je mets $ ('inputelement'). PluginOne ('') dans un $ (document) .ready (function() { }); alors ça a bien marché. Cela a fonctionné car il n'a pas essayé d'attacher le plugin avant que tout ne soit chargé.

Questions connexes