Backbone.js:在视图中的click事件中使用jQuery应用类?

时间:2013-01-09 21:35:10

标签: javascript jquery backbone.js backbone-views

我有一个非常基本的Backbone问题。我想在单击一个元素时应用一个类(使用jQuery)。不幸的是我不知道如何使用Backbone视图执行此操作 - 我可以捕获click事件,但我不知道如何以jQuery可以理解的方式获取元素。

我的HTML看起来像这样:

<div id="options">
<ul>
<li>red</li>
<li class="selected">blue</li>
<li>green</li>
</ul>
</div>

更新 - 抱歉,我应该给出一个较少编辑的示例,真正的HTML实际上是这样的:

<li><img src="red.jpg"><h3>red</h3></li> 
<li class="selected"><img src="blue.jpg"><h3>blue</h3></li> 
<li><img src="green.jpg"><h3>green</h3></li> 

我的Backbone代码如下所示:

var SearchFormView = Backbone.View.extend({
el: $('#options'),
events: {
  "click li": "updateResults"
},
updateResults: function(e) {
  console.log('updateResults');
  $(this).toggleClass("selected");
}

});

它无法正常工作 - updateResults正在登录到控制台,但该类未被应用。我认为这是因为我没有正确使用this。感谢任何建议。

2 个答案:

答案 0 :(得分:6)

在使用骨干事件时,将this设置为视图。尝试使用e.target代替this

答案 1 :(得分:1)

基于hajpoj的答案的评论,似乎你可能需要以下jQuery函数之一,应用$(e.target)的'li'元素(很难说没有确切的html):

  1. .parents('li')
  2. .closest('li')