backbone.js - 事件,知道被点击的内容

Mat*_*hew 96 javascript jquery backbone.js underscore.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())
},

...
Run Code Online (Sandbox Code Playgroud)

因为我的每页标记可能有类似于:

<ul id="perpage">
  <li><span>5</span></li>
  <li><span>10</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能找到导致该事件的元素的信息呢?或者在这个例子中,点击了?

Jam*_*ong 131

通常在事件绑定上,您只需使用$(this),但我相当确定设置了Backbone视图以便this始终引用视图,因此请尝试以下操作:

perpage: function(ev) {
   alert($(ev.target).text());
}
Run Code Online (Sandbox Code Playgroud)

真正的编辑:您可能想要使用$(ev.currentTarget).请参阅下面关于pawlik答案的讨论

  • 男人,为什么不是这个文件中的金块?发牢骚. (10认同)

paw*_*lik 97

ev.target可能会产生误导,您应该ev.currentTarget按照http://www.quirksmode.org/js/events_order.html中的说明使用

  • 我只是玩这个,澄清一下,你可能想要ev.currentTarget.它在所有支持jQuery的浏览器中都是标准化且安全的. (6认同)
  • 是的,您想使用currentTarget而不是target.例如,如果绑定包含子对象"<a> <span> text </a>"的链接,则target可以指向<span>而不是<a>. (4认同)
  • 很高兴知道 - 但看起来它没有在IE中实现 - 或jQuery做标准化来解决这个问题? (2认同)
  • 看起来jQuery将ev.target规范化为初始化event_的_dom元素,并将ev.currentTarget规范化为事件冒泡阶段中的当前DOM元素_ http://api.jquery.com/category/events/event-object/ (2认同)