0

かなり基本的なバックボーンの質問があります。要素がクリックされたときに (jQuery を使用して) クラスを適用したい。残念ながら、バックボーン ビューでこれを行う方法がわかりません。クリック イベントをキャプチャできますが、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> 

そして、私のバックボーン コードは次のようになります。

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

バックボーン イベントを使用する場合の Supthisは、ビューに設定されます。e.targetの代わりに使ってみてくださいthis

于 2013-01-09T21:36:55.530 に答える
1

hajpojの回答からのコメントに基づくと、$(e.target)の「li」要素を適用した次のjQuery関数のいずれかが必要になる可能性があります(正確なhtmlがないとわかりません)。

  1. .parents('li')
  2. .closest('li')
于 2013-01-10T12:02:33.107 に答える