Bonjour à tous,
Je suis en train de créer un plugin de petite taille pour répondre à un besoin ponctuel, j'ai donc choisi un pattern simple qui me permette d'avoir des méthodes privées/publiques:
Problème: après appel du plugin sur un élément de la page, il se charge très bien, mais la propriété .data('monSuperPlugin') de l'élément est parfois undefined.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 (function($) { function MonSuperPlugin(element, options) { ... } $.fn.monsuperplugin = function(options) { var defaults = ... var settings = $.extend({}, defaults, options); return this.each(function(){ if (!$(this).data('monSuperPlugin')) $(this).data('monSuperPlugin', new MonSuperPlugin($(this), settings)); }); } })(jQuery);
J'ai donc fait un petit algo qui rafraîchit la page toutes les secondes et teste la valeur dans .data, résultat: c'est très aléatoire. Elle est undefined parfois une fois sur deux, parfois une sur trois, parfois 5 fois d'affilées, parfois ça marche 20 fois de suite, bref aucune logique.
Quelqu'un pourrait-il m'aider à comprendre, je ne vois pas du tout de quoi ça peut venir. Pour information, le plugin est très court (100-200 lignes) et n'utilise aucune requête asynchrone.
Merci d'avance pour votre aide.
Partager