0

我有一个非常基本的 Backbone 问题。我想在单击元素时应用一个类(使用 jQuery)。不幸的是,我不知道如何使用 Backbone 视图执行此操作 - 我可以捕获单击事件,但我不知道如何以 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正确使用。感谢任何建议。

4

2 回答 2

6

Sup 在使用主干事件时,this设置为视图。尝试使用e.target而不是this.

于 2013-01-09T21:36:55.530 回答
1

根据 hajpoj 回答的评论,您可能需要以下 jQuery 函数之一,并与 $(e.target) 的 'li' 元素一起应用(如果没有确切的 html,很难分辨):

  1. .parents('李')
  2. .closest('li')
于 2013-01-10T12:02:33.107 回答