[英]Accessing elements inside a view - Backbone.JS
编辑:已解决
代码中有两个错字,一个错字,另一个错字,非常感谢,很抱歉!
你好,
我当前的问题是在浏览Backbone.js时发生的
我使用主干创建了一个简单的HTML表,每一行都是一个模型,所有行的集合都传递给一个呈现所有内容的视图-到目前为止,一切都很好。
我的表具有以下类:每个表单元格都有一个.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.
},
});
您必须将事件和处理程序添加到events
哈希中(示例中缺少空格):
events: { 'click .tablecell': 'clickOnCell' }
您收到jQuery(或您要替换为jQuery的另一个框架)事件对象:
clickOnCell: function (e) {
var $td = $(e.currentTarget);
$td.css('color', 'red');
}
了解事件委派发生在视图实例化的末尾。 那样的话,我的意思是您的视图必须具有el
属性作为行。
如果无法在视图定义期间设置el
属性(似乎是这种情况),请尝试在render
期间将setElement
表行元素。
render: function () {
//...
var myRow = $('<tr/>');
this.setElement(myRow);
//...
}
希望我有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.