2010-10-29 5 views

Répondre

1

Il n'y a pas besoin de passer un indice ici, puisque this fera référence à l'élément que vous voulez cliquer à l'intérieur d'un gestionnaire d'événements click, vous pouvez simplement le faire:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 
     this.items.bind('click', this.doSomething); 
    },  
    doSomething: function() { 
     alert(this.innerHTML); 
    } 
}; 

You can test it out here.

+0

oui, mais j'ai besoin de "ceci" sera MyObject, pas l'élément "a" qui déclenche l'événement. – Luistar15

+0

@ Luistar15 - Ce n'est pas le cas dans un gestionnaire d'événements, 'this' fait référence à l'élément, si vous voulez qu'il se réfère à l'élément, il vaut mieux créer une variable comme' self' que vous référez, ou changer le contexte du gestionnaire ... mais il n'y a qu'une copie de votre variable de toute façon, vous pouvez juste faire 'MyObject' pour y faire référence, à moins que je ne manque quelque chose? –

+0

Je comprends, oui, il n'y a qu'une seule copie. Donc, je ne peux pas faire quelque chose comme ça (http://jsfiddle.net/mUjAj/2/)? La version de jquery serait (http://jsfiddle.net/mUjAj/3/). Alors, est-il certain que je ne peux pas utiliser "this" pour faire référence à "MyObject"? Ou y a-t-il un moyen? – Luistar15

0

Essayez et voir si cela fonctionne:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 

     for (var i = 0; i < this.items.length; i++) { 
      $(this.items[i]).bind('click', {index:i}, this.doSomething); 
     } 
    }, 

    doSomething: function (e) { 
     alert(e.data.index); 

    } 
}; 
+0

oui, cela fonctionne, juste un petit correctif: faire quelque chose: fonction (e) ..., merci – Luistar15

+0

Je ne peux pas encore voter, mais merci encore. – Luistar15

+0

Opps, j'ai besoin que "this" soit MyObject, pas l'élément "a" qui déclenche l'événement. – Luistar15

Questions connexes