web-dev-qa-db-fra.com

backbone.js - événements, sachant ce qui a été cliqué

Dans l'une de mes classes d'affichage backbone.js, j'ai quelque chose comme:

...

events: {
  'click ul#perpage span' : 'perpage'
},

perpage: function() {
  // Access the text of the span that was clicked here
  // Something like: alert($(element).text())
},

...

parce que mon balisage par page pourrait avoir quelque chose comme:

<ul id="perpage">
  <li><span>5</span></li>
  <li><span>10</span></li>
</ul>

Alors, comment puis-je trouver des informations sur l'élément qui a provoqué l'événement? Ou dans ce cas, qui a été cliqué?

96
Matthew

Normalement, sur une liaison d'événement, vous utiliseriez simplement $(this), mais je suis à peu près sûr que les vues de backbone sont configurées de manière à ce que this fasse toujours référence à la vue.

perpage: function(ev) {
   alert($(ev.target).text());
}

VRAIMENT TARD EDIT : Vous voudrez probablement utiliser $(ev.currentTarget). Voir la discussion sur la réponse de pawlik ci-dessous

130
Jamie Wong

ev.target peut être trompeur, vous devez utiliser ev.currentTarget comme décrit sur http://www.quirksmode.org/js/events_order.html

96
pawlik

Vous pouvez obtenir n'importe quel attribut que vous voulez. ev fonctionne comme this

perpage: function(ev) {
        console.log($(ev.target).attr('name'));
}
0
Nvan