2012-02-06 5 views
1

私は多くの.element子供たちと#root DOMオブジェクトを持って `el`と` $ el`をターゲット:は正しく

<div id='root'> 
    <div class='element'> 
    <span>Element 1</span> 
    </div> 
    <div class='element'> 
    <span>Element 2</span> 
    </div> 
    <div class='element'> 
    <span>Element 3</span> 
    </div> 
</div> 

私はすべての.elementのためのバックボーンビューのインスタンスをしたいです。

var ElementView = Backbone.View.extend({ 
    initialize: function() { 
    _.bindAll(this, 'showText'); 
    this.setElement('.element'); 
    }, 
    events: { 
    'click span': 'showText' 
    }, 
    showText: function() { 
    console.log('You have clicked ' + $el.text()); 
    } 
}); 

を次のように私は私の意見を初期化します:問題は.elementが十分に正確ではないということです

new ElementView({ model: modelInstance }); 

$elは、すべての初期化のために$('.element')[0]になりますこれは私が試したものです。どのように多くの要素が同じCSSセレクタを持つ状況に対処する必要がありますか?

答えて

5

それらに関連する要素を使用してビューを初期化します。initializeコードでthis.setElement('.element');を削除するのを忘れ

$(".element").each(function(ix,el) { 
    new ElementView({ model: modelInstance , el:el }); 
}); 

いけません」。