Vous appelez le widget dans le mauvais sens. Vous voulez que votre élément devienne votre widget, vous devez donc définir votre élément de widget comme vous le feriez pour n'importe quel autre widget de jQuery UI, c'est-à-dire. $('element').scrollable()
, .draggable()
, etc.
A l'intérieur de votre deletion de widget, vous voulez définir tous les écouteurs et les événements pour chaque élément auquel le widget est défini. Donc, si vous voulez que quelque chose se déclenche au clic de votre élément de widget, vous devez définir un événement de clic sur this.element
, en référence à l'élément de widget en cours, dans ce cas votre div.
La fonction _init
est appelée une seule fois, comme tout le monde l'a dit, lors de l'initialisation de votre widget. Cependant, si vous le configurez correctement, l'événement click doit se déclencher à chaque clic de votre élément. Cela devrait aider.
HTML:
<div id="hello_world">Click Me</div>
JS:
$.widget("ui.myWidget", {
_init: function() {
//start
this._show();
var thisWidget = this;
this.options.handler.click(function(){
thisWidget._show();
});
},
_show: function(){
alert('Hello World???');
}
});
$('div#click_me').click(function(){
$('#id').myWidget({handler: $(this)});
});
Je suppose que init est exécuté qu'une seule fois. – fmsf
que se passe-t-il si je renommer init en quelque chose d'autre ou ajouter une autre fonction en dessous et appeler la fonction ci-dessous init chaque? – Val