2009-08-05 4 views
1

Disons que j'ai ceci:Appel d'une fonction en cas de clic jquery lors de l'utilisation des cours

test = function() { 

this.init = function() { 
    $("#someElement").html("Hey!").mousedown(function() { 
    $(this).html("Clicked"); 

    /* 
    Now, if I wanted it to call function "dosomething" defined in the class, how would I do that? this.dosomething() obviously doesn't work. 
    */ 

    }); 
} 

this.dosomething = function() { 
    alert("Did it!"); 
} 

} 

var _go = new test(); 
_go.init(); 

Répondre

1

Vous pouvez définir un contexte avant de perdre la référence à votre classe:

test = function() { 

    var context = this; 

    init = function() { 
    $("#someElement").html("Hey!").mousedown(function() { 
     $(this).html("Clicked"); 
     context.dosomething(); 

    }); 
    } 

    dosomething = function() { 
    alert("Did it!"); 
    } 

} 
+0

Merci! Je vois que l'utilisateur womp a également édité sa réponse pour les bêtisiers comme moi, alors merci beaucoup à tous les deux! –

+0

Ouais j'ai eu une distraction pendant quelques minutes en ajoutant l'exemple de code. Suce d'être moi;) – womp

2

encapsulent le « dosomething » appeler dans une variable javascript dans votre fonction externe, et la référence dans votre fonction intérieure. Cela crée une fermeture dans laquelle la fonction interne fait toujours référence aux variables de la fonction externe.

0

test Declare comme étant une nouvelle fonction() au préalable. Je suis sûr qu'il existe d'autres/meilleures façons de le faire, mais je sais que cela fonctionne.

Questions connexes