【发布时间】:2011-07-19 17:10:32
【问题描述】:
我的页面结构如下:
<ul class="listOfPosts">
<li class="post WCPost" data-postId="1">
<div class="checkbox"><input type="checkbox" class="wcCheckbox"/></div>
<div class="PostContainer>
<!-- some other layout/content here -->
<ul class="listOfLabels">
<li class="label"> Label 1</li>
<li class="label"> Label 2</li>
</ul>
</div>
</li>
<li class="post WCPost" data-postId="2">...</li>
<li class="post WCPost" data-postId="3">...</li>
<li class="post WCPost" data-postId="4">...</li>
...
</ul>
这是过于简单的视图:
var MyView = Backbone.View.extend({
el:$('.listOfPosts'),
initialize: function() {
_.bindAll(this,"postClicked");
},
events: {
"click .wcCheckbox":"postClicked"
},
postClicked: function() {
alert("Got a a click in the backbone!");
}
});
问题:我想知道被点击的帖子的数据ID。使用简单的 JQuery,我可以做到以下几点:
$('.wcCheckbox').live('click' function() {
alert("Data id of post = "+$(this).parents('.WCPost').data('data-postId'));
}
现在我知道 Backbone 会进行事件委托,因此它需要 el 属性中的 DOM 引用。如果我给它 .listOfPosts ,那么事件似乎会完美触发,但要检查“哪些”帖子,我必须继续遍历 DOM 并挑选出被选中的元素!!!在我看来,这将是相当昂贵的!我如何在 Backbone 中为每个单独的帖子执行此操作?即,如何将视图绑定到每个单独的 li.WCPost?
注意:我没有使用普通的 jQuery,因为我需要编写的代码最好使用 Backbone 的模块化设计完成,但由于我不是 Backbone 的专业人士(但;)有点困惑......
【问题讨论】:
标签: javascript jquery backbone.js