240 votes

Comment puis-je vérifier si un plugin jQuery est chargé?

Est-il possible de vérifier si un plugin particulier est disponible?

Imaginez que vous développez un plugin qui dépend du chargement d'un autre plugin.

Par exemple, je veux que le plugin jQuery Validation utilise la bibliothèque dateJS pour vérifier si une date donnée est valide. Quel serait le meilleur moyen de détecter, dans le plugin jQuery Valdation, si la dateJS était disponible?

383voto

Eran Galperin Points 49594

D'une manière générale, les plugins jQuery sont des espaces de noms sur la portée jQuery. Vous pouvez exécuter une vérification simple pour voir si l'espace de noms existe:

  if(jQuery().pluginName) {
     //run plugin dependent code
 }
 

dateJs n'est cependant pas un plugin jQuery. Il modifie / étend l'objet de date javascript et n'est pas ajouté en tant qu'espace de noms jQuery. Vous pouvez vérifier si la méthode dont vous avez besoin existe, par exemple:

  if(Date.today) {
      //Use the dateJS today() method
 }
 

Mais vous pourriez rencontrer des problèmes où l'API chevauche l'API Date native.

110voto

rmirabelle Points 822

Si nous parlons d'un bon plugin jQuery (qui prolonge le fn espace de noms), puis à la bonne façon de détecter le plugin serait:

if($.fn.pluginname != 'undefined')

Ou parce que chaque plugin est presque garanti d'avoir une valeur qui correspond à la valeur true, vous pouvez utiliser le plus court

if($.fn.pluginname)

BTW, l' $ et jQuery sont interchangeables, comme l'étrange wrapper autour d'un plugin montre:

(function($) {
    //
})(jQuery))

la fermeture

(function($) {
    //
})

est immédiatement suivie par un appel à la fermeture "passer" jQuery en tant que paramètre

(jQuery)

l' $ à la clôture est égale à jQuery

11voto

Suso Guez Points 74

Pour détecter les plugins jQuery j'ai trouvé plus précis d'utiliser les crochets:

 if(jQuery().pluginName) {
    //run plugin dependent code
}
 

8voto

trante Points 3811

pour les plugins qui n’utilise pas fn espace de noms (par exemple pnotify), cela fonctionne :

Cela ne fonctionne pas :

-1voto

ceejayoz Points 85962

Ce genre de démarche devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X