1

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

谢谢!

4

2 回答 2

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');               
  }
});

这与您的解决方法类似,但您不需要重新选择项目,并且您应该能够链接调用。

于 2010-10-27T22:23:17.390 回答
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))
    });                     
  }
});
于 2010-10-27T04:20:13.670 回答