2009-03-02 7 views
2

Est-il possible de faire cela à l'intérieur d'une classe? Donc, fondamentalement, je veux passer une fonction de l'objet qui doit être exécutée chaque fois que l'on clique sur quelque chose. En outre, s'il y a plus d'une instance de cet objet, alors l'instance correcte (c'est-à-dire celle qui exécute ce code pour le champ donné) doit être exécutée.Pouvez-vous le faire en utilisant jquery?

Répondre

0

Oui, c'est possible.

il y a

10 minutes ecrivais un snipet parce que je venais juste de ce problème

$("div.myalarms_delete").click(function(){ 
    var mid = this.id; 
    $("li#"+mid).fadeOut("fast"); 
}); 

le div.myalarms_delete aussi comme id je avais besoin

+0

Eh bien merci: p réellement pensé que c'était une solution jolie et simple – fmsf

+0

Ne peut-il pas être juste: $ ("li #" + this.id) .fadeOut ("rapide"); –

+0

errr ID devrait être unique ..... si je comprends bien, sinon pourquoi ne pas utiliser $ (this) .fadeOut() – redsquare

3

Je ne suis pas sûr un moyen facile, mais vous pouvez toujours aller la route de fermeture:

var that = this; 
$("#" + field).click(function() { 
    that.validate(); 
}); 
+0

+1 b/c cela évite les problèmes de liaison difficiles de javascript. – Kip

0

De l'intérieur d'une classe, vous êtes généralement mieux d'utiliser la fonction .find.

var child = this.find('.someChildClass'); 
var child2 = this.find('#someChildId'); 
1

Est-il possible de le faire à partir d'une classe?

$ ("#" + champ) .click (this.validate);

"this.validate" est problématique. JavaScript n'a pas de méthodes liées, donc lorsque vous passez cette référence, elle pointe uniquement vers une fonction simple. Lorsqu'il est appelé, 'ceci' ne sera pas correctement défini. Voir ALA pour une discussion assez approfondie du problème de perte de liaison.

Certains cadres fournissent une fonctionnalité de liaison de méthode intégrée; jQuery ne le fait pas, car il a tendance à se concentrer davantage sur les fermetures que sur les objets JavaScript. Dans tous les cas, créer une enveloppe de liaison à l'aide d'une fermeture est assez simple; La réponse d'Andrey est l'approche habituelle pour les utilisateurs de jQuery. La seule chose à surveiller avec les fermetures pour les gestionnaires d'événements (que vous utilisiez jQuery ou non) est que cela a tendance à provoquer des fuites de mémoire dans Internet Explorer. Pour les pages Web simples et de courte durée, cela ne vous intéresse peut-être pas.

Questions connexes