2016-08-09 28 views
0

我們有我們的網頁內的DIV:如何從漢德爾模板中選擇元素?

<div id="person-details"> 
    <div></div> 
    ... 
</div> 

我們選擇這個相關元素DIV使用下面的jQuery代碼:

var person = $("#person-details"); 
var children = release.find("div"); 
var fullname = children.first(); 

我們使用渲染函數來執行一個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> 

在渲染函數被調用之後,我們希望從模板中選擇任何元素。例如,我們已經嘗試使用:

fullname.children('div');

但內容已被動態生成的,我們無法從DOM中得到的節點。

是否有可能從這樣的生成的句柄模板中選擇元素?

+1

有可能,只要記住javascript會異步執行,所以你可能會選擇一個尚未呈現的DOM元素。 –

+0

@DanielShillcock感謝Daniel,完全忽略了渲染的異步本質。 – cgmcintyre

+1

以下是可能有所幫助的代碼片段。每個輸入都被打印到控制檯。 http://codepen.io/IronAces/pen/NAEOWy?editors=101#anon-login –

回答

2

感謝@DanielShillcock突出顯示render()是異步的。這是一個解決方案:

function _render() { 
    var templateScript; 
    template.getTemplate(filename).done(function(template) { 
     templateScript = Handlebars.compile(template); 
     selector.html(templateScript(attribute)); 
     value = selector.find("div"); 
    }); 
}