11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

J'utilise le framework Prototype et j'aimerais arrêter d'observer un élément après un 'click', cad lancer une fonction q'au premier click.

Observer si un événement 'click' se fait sur mon élément, lancer une fonction dans ce cas et dire d'arrêter d'observer à la fin de celle-ci.


Voici le code simplifié:


var MyObject = Class.create();
MyObject.prototype = {

      initialize: function() {

            this.element = this._build();

            this._addObservers();

      },

      _build: function() {
            ...
      },

      
      _addObservers: function() {
      
            this.oneClick= this._oneClick.bindAsEventListener(this);

            Event.observe(this.element, 'click', this.oneClick);	
      
      },

      _oneClick: function() {

            alert('un click');

            Event.stopObserving(this.element, 'click', this.oneClick);

      }
}



J'ai donc bien un 'alert' au premier 'click', ce qui est plus embêtant c'est que le stopObserving n'empêche pas d'ouvrir d'autre 'alert'. Smiley sweatdrop
Modifié par Glopp (08 Apr 2009 - 14:12)
J'ai trouvé pourquoi cela ne marchait pas Smiley langue .

En fait lorsque je lançais la fonction (ici _oneClick) je lançais une autre fonction avant le Event.stopObserving et elle bloquai à la dernière ligne (tentative d'accès à une variable qui n'existait plus Smiley biggol )

Donc résolu Smiley confused