Thursday, May 3, 2012

backbone.js - events, knowing what was clicked


In one of my backbone.js view classes, I have something like:




...

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

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

...



because my per page markup might have something like:




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



So how exactly can I find information about the element that caused the event? Or in this instance, that was clicked?


Source: Tips4all

2 comments:

  1. Normally on an event bind, you would just use $(this), but I'm fairly sure Backbone views are set up so that this always refer to the view, so try this:

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

    ReplyDelete
  2. ev.target can be misleading, you should use ev.currentTarget as described on http://www.quirksmode.org/js/events_order.html

    ReplyDelete