我正在使用插件jquery-tmpl。有没有办法在模板运行后指定回调?我想做像
这样的事情<script id='itemTemplate' type='text/html'>
<li class="item" id=${timestampMs}>
<span class="content">${content}</span>
</li>
${processItem($('#' + timestampMs))}
</script>
processItem
对刚刚生成的<li>
元素执行某些操作。但是,正如它所写的那样,在调用processItem
时该元素不存在。
以下是我运行模板的方法:
// Make the AJAX call to the service
$.ajax({
dataType: "json",
url: "/getItems",
success: function(data) {
// fill out template from json
$('#itemTemplate').tmpl(data).appendTo('#container');
}
});
谢谢!
答案 0 :(得分:4)
调用.tmpl后,您可以使用可以执行操作的节点,因此您可以执行此操作:
$.ajax({
dataType: "json",
url: "/getItems",
success: function(data) {
// fill out template from json
$('#itemTemplate').tmpl(data).each(function (index) {
processItem($(this))
}).appendTo('#container');
}
});
这与您的解决方法类似,但您不需要重新选择项目,并且您应该能够将呼叫链接起来。
答案 1 :(得分:0)
以下是我现在使用的解决方法:
$.ajax({
dataType: "json",
url: "/getItems",
success: function(data) {
// fill out template from json
$('#itemTemplate').tmpl(data).appendTo('#container');
// now process the new events
$('#container .item').each(function (index) {
processItem($(this))
});
}
});