Bonjour,
Imaginons la situations suivante :
1 2 3 4 5 6 7
|
$.widget("custom.test", {
options: {},
_create : function() { this.element.append($("<input />").attr("type", "button").val("clickez la").on("click", this.fA )); },
fA : function(event) { this.fB("pouet"); },
fB : function(param) { alert(param); }
}); |
et que je l'utilise comme suit :
1 2
| <div id="test"></div>
$("#test").test(); |
pas de soucis, ça fonctionne... mais si je click sur le bouton, mon Firebug m'indique l'erreur :
TypeError: this.fB is not a function
Faut croire que le contexte n'est plus le même...
Du coup, j'essaye d'écrire à la place :
_create : function() { this.element.append($("<input />").attr("type", "button").val("clickez la").on("click", function(event){$(this).test("fA");} )); },...
et là, si je click, il me répond
Error: cannot call methods on test prior to initialization; attempted to call method 'fA'
Quelle est la bonne façon de faire ?
Partager