Javascript 如何从handelbars模板中选择元素?

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:

<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,他完全忽略了呈现的异步性质。下面是一个可能会有所帮助的片段。每个输入都打印到控制台。