Bonjour,

Imaginons la situations suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
_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 ?