2011-07-27 5 views
1

Je veux utiliser JQuery dans un programme Javascript sur lequel je travaille mais j'ai rencontré des problèmes de portée. Comment puis-je appeler myfunction2 depuis myfunction1 dans ce code? (Supposons qu'un nouvel objet MyConstructor a été créé quelque part et que MyFunction1() a été appelé)Comment appeler cette fonction depuis JQuery?

function MyConstructor(){...} 

MyConstructor.prototype.myfunction1 = function(param) { 
    $('#some_element').click(function(){ 
    this.myfunction2('clicked!'); //this doesn't work 
    }); 
} 

MyConstructor.prototype.myfunction2 = function(param) { 

} 

Répondre

2

myfunction2 peut être appelé avec this.myfunction2() lorsque dans une fonction de MyConstructor.

Dans votre cas, vous essayez d'appeler myfunction2 à l'intérieur d'une autre fonction qui a une signification différente pour this. Pour accéder myfunction2 vous pouvez créer une variable soit pour this ou this.myfunction2 qui est portée de fermeture qui s'étend au paramètre de la fonction de click

var self = this; 
$('#some_element').click(function(){ 
    self.myfunction2('clicked!'); 
}); 

ou

var myfunction2 = this.myfunction2; 
$('#some_element').click(function(){ 
    myfunction2('clicked!'); 
}); 
+0

Merci pour la réponse rapide! – orourkedd

Questions connexes