11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

j'ai un problème en poo javascript :
voilà mon code

var monObject = function(ref){
	this.selecteur = $(ref);
}

monObject .prototype = 
{
	
	init: function (){		
		var that = this;
		this.selecteur .on("mousemove", function(evt) { that.actionSurMouseMove.call(that, evt) });
	},

	actionSurMouseMove: function (){		
		// Fait des trucs... et après...
		var that = this;
		this.selecteur .off("mousemove", function(evt) { that.actionSurMouseMove.call(that, evt) });
	}
}


Et ben, ca marche pas, j'arrive pas à enlever l'event...
Est ce que c'est parce que je suis dans une fonction anonyme ?

Merci
J'ai trouvé... Smiley smile

Avec jquery.proxy(), il suffit de définir une propriété "gestionnaire" de l'événement,
ce qui permet de le retrouver pour le supprimer.
Voilà en gros mon code


var monObject = function(ref){
	this.selecteur = $(ref);
	this.gestionnaireEvent = $.proxy(this.actionSurMouseMove, this);
}

monObject .prototype = 
{
	
	init: function (){		
		this.selecteur .on('mousemove', this.gestionnaireEvent );
	},

	actionSurMouseMove: function (){		
		// Fait des trucs... 
	},

	supprimeActionSurMouseMove: function (){		
		this.selecteur .off('mousemove',this.gestionnaireEvent);		
	}

}


Smiley sweatdrop
Les contextes des variables et la gestion des events, c'est vraiment pénible en javascript...
Modifié par Heillige Leben (17 Oct 2014 - 08:51)