kręgosłup.js-wydarzenia, wiedząc, co zostało kliknięte

W jednym z moich kręgosłupów.klasy js view, mam coś w stylu:

...

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

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

...

Ponieważ mój znacznik na stronę może mieć coś w stylu:

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

Więc jak dokładnie mogę znaleźć informacje o elemencie, który spowodował Zdarzenie? Czy w tym przypadku, to zostało kliknięte?

Author: Matthew, 2011-04-15

3 answers

Normalnie na zdarzeniu bind używasz tylko $(this), ale jestem całkiem pewien, że widoki szkieletowe są ustawione tak, aby this zawsze odnosiły się do widoku, więc spróbuj tak:

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

Bardzo późna edycja : prawdopodobnie chcesz użyć $(ev.currentTarget). Zobacz odpowiedź Pawlika poniżej

 130
Author: Jamie Wong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-04 20:02:36

ev.target może być mylące, należy użyć ev.currentTarget jak opisano na http://www.quirksmode.org/js/events_order.html

 96
Author: pawlik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 23:06:40

Możesz uzyskać dowolny atrybut. ev działa jako this:

perpage: function(ev) {
        console.log($(ev.target).attr('name'));
}
 0
Author: Nvan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-20 14:22:07