Javascript 主干重新加载与jquery删除
我正在浏览一个主干教程,了解到下面的代码片段,其中导师正在从Javascript 主干重新加载与jquery删除,javascript,jquery,html,dom,backbone.js,Javascript,Jquery,Html,Dom,Backbone.js,我正在浏览一个主干教程,了解到下面的代码片段,其中导师正在从集合中删除一个模型,并更新UI var PersonsView = Backbone.View.extend({ initialize: function(){ this.model.on('add', this.addPerson, this); this.model.on('remove', this.removePerson, this); }, addPerson: fun
集合中删除一个模型
,并更新UI
var PersonsView = Backbone.View.extend({
initialize: function(){
this.model.on('add', this.addPerson, this);
this.model.on('remove', this.removePerson, this);
},
addPerson: function(person) {
var personView = new PersonView({model: person});
this.$el.append(personView.render().$el);
},
removePerson: function(person){
this.$('li#' + person.id).remove();
},
render: function() {
var self = this;
self.model.each(function(record) {
var personView = new PersonView({model: record});
self.$el.append(personView.render().$el);
});
}
});
在函数中
removePerson: function(person){
this.$('li#' + person.id).remove();
},
他正在DOM中搜索songId
,并使用jQuery将其从UI中删除
我的问题是什么是完成这项任务的更快方法
this.$('li#' + person.id).remove();
其中整个DOM树将被解析为搜索元素并将其删除
或
删除并重新渲染整个视图的位置
顺便说一句,我对主干网完全陌生,所以请从
如果页面上包含jQuery,则每个视图都有一个$function,用于运行视图元素范围内的查询。。。它相当于运行:view.$el.find(选择器)
因此-this.$(…)
-选择器只解析视图的元素,而不是整个DOM。我会坚持第一种方式。这(像往常一样)要看情况而定。实际上,我要走第三条路:找到相应的PersonView
,然后调用它。显然,搜索现有的东西要比破坏整个东西并用少一个节点重新创建整个东西好得多,你不觉得吗?为什么要否决这个问题?你能告诉我这个问题出了什么问题吗?我只是问哪种方法最有效、最快?@TJ,我认为浏览器在删除任何节点时在内部执行相同的操作(删除一个节点并重新渲染所有节点,而不删除该节点)。@saurabbayani当您执行this时。$el.html(“”)代码>浏览器如何可能知道您的意图是在将来渲染现有对象而不使用一个节点。。?
this.$el.html('');
this.render();