编辑:已解决
代码中有两个拼写错误,一个是陈述的,另一个是偷偷摸摸的, 非常感谢,抱歉你的时间!
你好,
我在探索Backbone.js时遇到了当前的问题
我使用骨干创建了一个简单的HTML表,每一行都是一个模型,所有行的集合都传递给一个呈现所有内容的视图 - 到目前为止,非常好。
我的表有以下类:每个tablecell都有一个.tablecell类,每行都有一个.tablerow类。
我目前有一个点击事件,每次点击表格单元格时都会正确触发。 我想知道的是,如果可能的话,我可以如何访问'点击'表格单元格并改变他的属性。 举个简单的例子,更改单击的单元格的类或更改背景颜色。
甚至可以做到吗?或者我完全错过了什么?
我目前的想法是,每个细胞必须是他自己的模型和他自己的观点和他自己的事件,但我怀疑它应该是如此复杂。 提前谢谢!
我的观点是:
var rowView = Backbone.View.extend({
//usual view attributes : el, model, initialize etc.
events :
{
"click.tablecell" : "clickOnCell",
},
clickOnCell : function(cell)
{
cell = $(cell.currentTarget);
cell.css("font-weight","bold");
},
render : function () {
// boring render method, renders correctly.
},
});
答案 0 :(得分:0)
您必须将事件和处理程序添加到events
哈希(您的示例中缺少空格):
events: { 'click .tablecell': 'clickOnCell' }
您收到jQuery(或您正在用其替换jQuery的另一个框架)事件对象:
clickOnCell: function (e) {
var $td = $(e.currentTarget);
$td.css('color', 'red');
}
了解事件委派发生在视图 instantiation 的末尾。这样,我的意思是您的视图必须具有el
属性作为您的行。
如果您无法在视图定义期间设置el
属性(似乎是这种情况),请尝试在setElement
期间使用render
到您的表格行元素。
render: function () {
//...
var myRow = $('<tr/>');
this.setElement(myRow);
//...
}
希望我帮助过。