如何在Backbone.js中追加后添加类
How to add class after append in Backbone.js?
再次提出关于我的todo应用程序的另一个问题。
目前发展情况良好。现在可以添加待办事项、删除待办事项、编辑待办事项和"完成"待办事项。
到目前为止,您可以在这里看到结果:http://todoapp.lusenet.com/
该应用程序包含到个视图:TodoView和AppView。AppView使用TodoView呈现应用程序。
加载应用程序时,会调用AppView的initialize
函数。这就是那里发生的事情:
initialize: function(){
this.input = this.$('#addTodo');
this.todoCollection = new app.TodoCollection(); // Create collection
this.todoCollection.fetch({reset: true}); // Fetch items
this.listenTo(this.todoCollection, 'reset', this.addAll);
this.listenTo(this.todoCollection, 'add', this.addOne);
}
因此,我创建了一个新的集合,获取其中的模型,从而触发reset
事件。CCD_ 3然后调用CCD_ 4函数。
这是addAll
函数:
addAll: function(){
var i = 0,
self = this;
this.$('#todoList').html(''); // clean the todo list
this.todoCollection.each(function(todo){
i++;
setTimeout(function(){
self.addOne(todo);
}, 200*i);
});
}
这个函数只是在整个集合中循环,并为每个模型调用addOne
。这是在超时时完成的,这样模型就可以一个接一个地被附加。
这是addOne
函数:
addOne: function(todo){
var view = new app.TodoView({model: todo}).render();
$(view.el).appendTo('#todoList');
}
我的麻烦开始了。addOne
函数将列表添加到模型中,这是完全可以的。当我把这个CSS添加到模型中时:
-webkit-transition: all 2000ms ease-out;
-moz-transition: all 2000ms ease-out;
-ms-transition: all 2000ms ease-out;
-o-transition: all 2000ms ease-out;
transition: all 2000ms ease-out;
bottom:-2px;
opacity: 0;
模型在添加时是隐藏的,这正是我想要的。我想,如果我在追加后调用addClass
,我就可以为模型设置动画。所以我添加了一行代码,使addOne
的功能如下:
addOne: function(todo){
var view = new app.TodoView({model: todo}).render();
$(view.el).appendTo('#todoList');
view.$el.addClass('show');
}
这是有效的,当我附加它时,只有模型已经有了类"show",所以不会发生淡入。在追加完成后,如何添加类?还是我做得完全错了?
谢谢!
在添加类之前,浏览器可能没有足够的时间将元素实际插入DOM。
我会尝试使用setTimeout
,您真的不需要大的值。
addOne: function(todo){
var view = new app.TodoView({model: todo}).render();
view.$el.appendTo('#todoList');
setTimeout(function(){
view.$el.addClass('show');
}, 40);
}
这实际上是一个已知的技巧,有些人甚至称之为0超时。
相关文章:
- jQuery动态使用.append()添加输入,但发布表单不是追加数据
- 第二次追加后添加逗号的问题等等
- Jquery在表WITH函数中追加新行后添加单击事件
- 存储对追加动态添加的元素的引用
- 单击按钮上的添加/追加动态数据库(SQL)选择框
- JQuery选择器找不到通过追加添加的对象
- 在Jquery中,通过追加函数以指数形式添加Div
- 无法与使用 jquery 追加添加的 dom 对象进行交互
- 如何将项目添加到选定的追加列表 jQuery
- 选择不追加在动态添加的行上的元素选项
- 选项追加不添加值以选择下拉列表
- 如何在CasperJS中添加/追加我的结果到文本文件
- 在当前工具提示文本 JQuery 旁边追加或添加新文本
- 如何通过单击“添加购物车”检查当前产品是否有追加销售
- 如何使用jQuery添加/追加到外部JSON文件
- 将事件添加到 ajax 追加的内容
- 除了通过JavaScript追加之外,还有其他方法可以将动态数据添加到jQuery移动页面中吗?
- 使用 JavaScript 追加添加 href
- 如何为jquery追加添加渐变效果
- 当我使用 jQuery 从“追加”添加文本时,文本没有显示