jquery-templ的回调函数?

时间:2010-10-27 02:14:12

标签: javascript jquery jquery-templates

我正在使用插件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');
  }
});

谢谢!

2 个答案:

答案 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))
    });                     
  }
});