Backbone.js - события, зная, что было нажато
В одном из классов просмотра backbone.js у меня есть что-то вроде:
...
events: {
'click ul#perpage span' : 'perpage'
},
perpage: function() {
// Access the text of the span that was clicked here
// Something like: alert($(element).text())
},
...
потому что моя разметка на каждую страницу может иметь что-то вроде:
<ul id="perpage">
<li><span>5</span></li>
<li><span>10</span></li>
</ul>
Итак, как именно я могу найти информацию об элементе, вызвавшем событие? Или в этом случае это было нажато?
Ответы
Ответ 1
Обычно для привязки события вы просто используете $(this)
, но я уверен, что представления Backbone настроены так, что this
всегда ссылаются на представление, поэтому попробуйте следующее:
perpage: function(ev) {
alert($(ev.target).text());
}
ДАЛЬНЕЙШЕЕ ИЗМЕНЕНИЕ. Вероятно, вы хотите использовать $(ev.currentTarget)
. См. Ответ на ответ pawlik ниже
Ответ 2
ev.target
может вводить в заблуждение, вы должны использовать ev.currentTarget
, как описано в http://www.quirksmode.org/js/events_order.html
Ответ 3
Вы можете получить любой атрибут, который вы хотите. ev
работает как this
:
perpage: function(ev) {
console.log($(ev.target).attr('name'));
}