爲了避免重複,我試圖在服務器和客戶端使用鬍鬚進行模板。我有一個像下面這樣的模板:如何使用jQuery提取動態加載的鬍鬚模板的一部分
<html>
<head>...</head>
<body>
<table>
<tbody id="#this">
{{rows}}
<tr>{{row}}<tr>
{{/rows}}
</tbody>
</table>
</body>
</html>
這對我的服務器端模板非常適用。然而,在客戶端,我遇到了一些麻煩。我可以使用ajax成功加載模板,但我不需要整個事情來更新表的行。
$(function() {
var template;
$.ajax('templates/thetemplate.mustache', {
success : function (data) {
template = $('#this', data).html();
},
dataType : 'html'
});
});
當我使用上述jQuery來獲得在#this
元素然而,{{rows}}
和{{/rows}}
線從結果剝離的內容,而它們之間的<tr>{{row}}</tr>
成功返回。我怎樣才能得到整個內容?
我試過$('#this', data).contents();
它給出了相同的結果,而$('#this', data).val();
它返回一個空字符串。使用$(data).find('#this')
代替具有相同的三個結果。我也嘗試將ajax調用的dataType設置爲'text'
,但沒有明顯的效果。
我意識到我可以通過使用partials來實現我想要的功能(不會爲客戶端和服務器端的用途重複部分模板),並且它可以避免傳輸更多模板需要委託人把它扔掉,但這並不能回答我的問題。 (壽光滑的解決方案表示讚賞)
感謝
我也可以使用整個模板,然後在鬍子渲染後執行jQuery選擇,如下所示: var rendered = Mustache.render(wholetemplate,data); $('#this')。html($('#this',rendered).html()); 但我寧願得到我需要的模板部分。 – coastwise 2012-03-04 03:55:35