正确定位'el`和`$ el`

时间:2012-02-06 13:13:38

标签: backbone.js

我有一个#root DOM对象,其中包含许多.element个孩子:

<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设置一个Backbone View实例。这就是我的尝试:

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());
  }
});

我按如下方式初始化我的观点:

new ElementView({ model: modelInstance });

问题是.element不够精确,$el每次初始化都会$('.element')[0]。我应该如何处理许多元素具有相同CSS选择器的情况?

1 个答案:

答案 0 :(得分:5)

使用相关元素初始化您的观看次数:

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

不要忘记删除this.setElement('.element');代码中的initialize