从视图中的HTML元素获取id的问题
我正在尝试做一个Backbone日历应用程序。我有一个模型Event
,EventView
和DailyView
。从视图中的HTML元素获取id的问题
DailyView
加载一个模板,其中包含一个表格,其中包含表示小时的单元格列表(例如:td #09
)。我想单击单元格并获得它的id
,但是当我这样做时,我失败了。我想我引用DailyView
中的el: div
而不是td
。
DailyView = Backbone.View.extend({
tagName: "div",
template: _.template($('#daily-view').html()),
events: {
'click td': 'onClick'
},
initialize: function(){
_.bindAll(this, 'render');
this.model.bind('change', this.render, this);
this.render();
},
render: function(){
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
onClick: function(){
var hour= $(this.el).attr("id");
//This doesn't work
}
我想过加入细胞作为子视图(有时是空的,有时含有Event
),但我不喜欢这种方式,我不希望更多的elemtns添加到DOM除非这是绝对必要的。
有没有办法可以参考td
而不是div
?
从这个帖子:How to find the Id of model corresponding to clicked item?
onClick: function(e){
var hour = e.currentTarget.id;
//This does work ?
}
它的确如此!我想我没有正确搜索。我没有足够的声望来夸耀你,因为我只是写了我的账户,但你让我确信参与这个网站的实用性。非常感谢:P – AnimusNecandi 2013-04-28 21:06:04
感谢您的提示,编辑了答案;) – 2013-04-28 21:54:59
首先,TagName属性标识要你的观点代表元素的类型。所以你需要它是'td',而不是'div'。其次,为了让您的td成为表格的一部分,您必须自己将其添加到表格中。这意味着你需要将它添加到表格标记中。 – kinakuta 2013-04-28 20:58:07
当你已经拥有['this。$ el'](http://backbonejs.org/#View-$el)时,不需要'$(this.el)'。无论如何,如果你打算为'this.model.bind()'调用提供第三个参数,那么就不需要'_.bindAll'。 – 2013-04-28 21:24:56
@kinakuta不,在这种情况下'div'是正确的。 'DailyView'是包含表格(和单元格)的包装器。 'EventView'代表单个元素。问题与代表表格无关。 @ muistooshort谢谢,你是对的。这是我第一次使用javascript(以及jQuery和Backbone)的应用程序,我需要澄清许多概念。 – AnimusNecandi 2013-04-29 07:40:10