Javascript 如何从handelbars模板中选择元素?
我们的网页中有一个div:Javascript 如何从handelbars模板中选择元素?,javascript,jquery,templates,dom,handlebars.js,Javascript,Jquery,Templates,Dom,Handlebars.js,我们的网页中有一个div: <div id="person-details"> <div></div> ... </div> 我们使用渲染函数执行ajax请求,以获取存储在外部文件中的把手模板: function _render() { var templateScript; template.getTemplate(filename).done(function(template) { templ
<div id="person-details">
<div></div>
...
</div>
我们使用渲染函数执行ajax请求,以获取存储在外部文件中的把手模板:
function _render() {
var templateScript;
template.getTemplate(filename).done(function(template) {
templateScript = Handlebars.compile(template);
fullname.html(templateScript(context));
});
}
该模板如下所示:
<div>
<div>
<p>{{name}}</p>
</div>
<div>
<p>{{value}}</p>
</div>
</div>
{{name}}
{{value}}
调用render函数后,我们希望从模板中选择任何元素。例如,我们尝试使用:
fullname.children('div')代码>
但是由于内容是动态生成的,我们无法从DOM中获取节点
甚至可以像这样从生成的把手模板中选择元素吗?感谢@danielshillock突出显示render()
是异步的。以下是一个解决方案:
function _render() {
var templateScript;
template.getTemplate(filename).done(function(template) {
templateScript = Handlebars.compile(template);
selector.html(templateScript(attribute));
value = selector.find("div");
});
}
感谢@danielshillock突出显示render()
是异步的。以下是一个解决方案:
function _render() {
var templateScript;
template.getTemplate(filename).done(function(template) {
templateScript = Handlebars.compile(template);
selector.html(templateScript(attribute));
value = selector.find("div");
});
}
这是可能的,请记住javascript将异步执行,因此您可能选择了一个尚未呈现的DOM元素。@Danielshillock感谢Daniel,他完全忽略了呈现的异步性质。下面是一个可能会有所帮助的片段。每个输入都打印到控制台。这是可能的,请记住javascript将异步执行,因此您可能选择了一个尚未呈现的DOM元素。@Danielshillock感谢Daniel,他完全忽略了呈现的异步性质。下面是一个可能会有所帮助的片段。每个输入都打印到控制台。