Javascript 如何将jquery函数重新附加到呈现的模板?
我有一个视图正在呈现我的模板-该模板由许多元素组成,我正在使用jquery插件内联编辑这些元素。通过相应地调用每个div.editable()使元素可编辑 我有一个包含以下元素的模板:Javascript 如何将jquery函数重新附加到呈现的模板?,javascript,backbone.js,Javascript,Backbone.js,我有一个视图正在呈现我的模板-该模板由许多元素组成,我正在使用jquery插件内联编辑这些元素。通过相应地调用每个div.editable()使元素可编辑 我有一个包含以下元素的模板: <div id="pricing">some value</div> <div id="terms">some other value</div> 有没有更好的方法可以做到这一点,而无需对视图的render方法中需要的每个div显式声明.editable() 我不
<div id="pricing">some value</div>
<div id="terms">some other value</div>
有没有更好的方法可以做到这一点,而无需对视图的render方法中需要的每个div显式声明.editable() 我不认为有很多方法可以解决这个问题。调用
editable()
必须在dom元素准备好使用插件进行操作之后进行。由于要替换HTML,因此必须等待视图重新呈现。我建议将需要编辑的div设置为自己的类,如editable
。然后,您可以使用类选择器,而不是分别为每个div执行该操作
<div id="pricing" class="editable">some value</div>
<div id="terms" class="editable">some other value</div>
这将使您无需为每个div编写新的调用,并且在视图中添加/删除div时无需不断更新 我认为
this.$el.find('.editable').editable()
或this.$('.editable').editable()
比$('.editable').editable()
更可靠,因为你不知道this.$el
什么时候会在DOM中,所以你不知道$('.editable')
什么时候会找到你关心的一切。@muistoshort-True。由于搜索的上下文有限,因此速度也可能更快,具体取决于DOM树的大小。我将更新anwser
<div id="pricing" class="editable">some value</div>
<div id="terms" class="editable">some other value</div>
this.$(".editable").editable(); //or this.$el.find('.editable').editable();
//instead of
this.$el.find('#pricing').editable();
this.$el.find('#terms').editable();
//etc.