web-dev-qa-db-ja.com

Backbone.js-クリックされたものを知るイベント

私のbackbone.jsビュークラスの1つには、次のようなものがあります:

...

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>

では、イベントを引き起こした要素に関する情報をどのように正確に見つけることができますか?または、このインスタンスでは、それがクリックされましたか?

96
Matthew

通常、イベントバインドでは$(this)を使用しますが、thisが常にビューを参照するようにBackboneビューが設定されていると確信しているので、これを試してください。

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

本当に遅い編集:おそらく$(ev.currentTarget)を使いたいでしょう。以下のpawlikの回答の議論を参照してください

131
Jamie Wong

ev.targetは誤解を招く可能性があります。ev.currentTargethttp://www.quirksmode.org/js/events_order.html で説明されているとおり

97
pawlik

必要な属性を取得できます。 evthisとして機能します:

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