J'écris un plugin JQuery, et je me demandais comment m'assurer que je n'écrase jamais jamais une future méthode natif jQuery.
Par exemple, mon plugin est appelé foo et utilisation est JQuery 2.6 a remarqué la popularité de FOO et a décidé qu'il l'inclurait dans le paquet principal. Il est également utilisé via Je ne veux pas que mon foo écrase la foo natif de JQuery (ou d'autres affrontements). P> C'est ce que je suis venu avec ... p> serait-ce le meilleur moyen de le faire? p> p> $ ('Sélecteur'). FOO () CODE>. P> $ ('sélecteur'). FOO () code>. P>
4 Réponses :
Vous voudriez probablement faire cela de manière similaire à la programmation de JavaScript régulière A getelementsbylassname code> Fonction - Vous vérifiez s'il existe et créez-le si non. P>
Je pense que vous seriez mieux avec:
$.foo = {
doSomething: function() { /* do something*/ },
doSomethingElse: function() { /* do something else*/ }
};
Merci pour votre réponse Karim79. Peut-être que je fais quelque chose de mal, mais quand je fais une alerte ($. Doulez-vous); code> i get non défini code> même si j'utilise jQuery 1.4 et alerte ); code> me donne le Tostring () code> de la fonction jQuery minifiée.
Vous pouvez ignorer les instructions code> si code> et construire la définition de définition dans votre déclaration de fonction.
(function($){
$.fn.foo = $.fn.foo || function () {
// only used if $.fn.foo is undefined
}
})(jQuery)
C'est sexy! Merci beaucoup pour votre réponse. Je ne pense pas que quiconque puisse top avoir. J'oublie toujours d'exploiter l'évaluation du court-circuit et JavaScript renvoyant le premier Truthy i> Opérande.
@Alxed - Vous devez noter que cela n'est pas sûr pour les propriétés, par exemple .length code>, .acacactive code> et d'autres éléments de défaut sur 0 code> être remplacé ici, même lorsqu'il est utilisé par JQuery.
@NICK Il n'y a que trois propriétés de non-fonction sur le prototype JQuery: jQuery code>, longueur code> et sélecteur code>. Tant que vous ne nommez pas votre plugin aucun de ces trois, vous devriez aller bien.
En fait, je n'allais pas réinventer la propriété code> code>: p
une version légèrement meilleure (performance-wise):
Si votre mise en œuvre de FOO est différente de celle de JQuery's est alors votre plugin aurait buggy ... Cela pourrait être une bonne pratique cependant, peut-être que je vais essayer :-)