wake-up-neo.com

backbone.js - Ereignisse, die wissen, was angeklickt wurde

In einer meiner Backbone.js-Ansichtsklassen habe ich Folgendes:

...

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

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

...

weil mein Markierungssatz pro Seite Folgendes haben kann:

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

Wie genau kann ich Informationen zu dem Element finden, das das Ereignis verursacht hat? Oder in diesem Fall wurde das angeklickt?

96
Matthew

Normalerweise würden Sie bei einer Ereignisbindung nur $(this) verwenden, aber ich bin ziemlich sicher, dass die Backbone-Ansichten so eingerichtet sind, dass this immer auf die Ansicht verweist.

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

WIRKLICH LATE EDIT : Wahrscheinlich möchten Sie $(ev.currentTarget) verwenden. Siehe die Diskussion zu pawliks Antwort unten

130
Jamie Wong

ev.target kann irreführend sein, verwenden Sie ev.currentTarget wie unter http://www.quirksmode.org/js/events_order.html beschrieben.

96
pawlik

Sie können jedes gewünschte Attribut erhalten. ev arbeitet als this

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