在每个呈现的 dom 节点中存储 jquery 模板数据
Store jquery template data in each rendered dom node
我正在从服务器检索列表 json 数据,该数据使用 jquery 模板呈现到 table 行中。例如:
<script id="entry_tmpl" type="text/x-jquery-tmpl">
<tr class="row_data" name="${id}>
<td class="col_name">${name}</td>
<td class="col_number">${number}</td>
</tr>
</script>
我用标准方式渲染它:
$("#entry_tmpl").tmpl(entries).appendTo(someNode);
到目前为止没有什么特别的。现在请注意,除了 'name' 和 'number' 之外,我在数据对象中还有一些额外的数据,它们不是由模板呈现的。我希望稍后能够在 javascript 中访问这些属性。所以我想找到一种方法来保存每个渲染音符的原始数据。所以稍后我可以做这样的事情:
var elmentObj = $("#row_data[name='5']").prop('obj_data');
var other_data = elementObj['other_data'];
实现这样的目标的最佳方法是什么?我在网上四处搜索,但找不到能满足我的要求的解决方案。
因此,在使用 jquery .data():
填充 table 之后,我最终只是自己在循环中设置数据
for (var i=0; i<entries.length; ++i) {
var e = entries[i];
$(_.str.sprintf("#entry_tmpl .row_data[name='%s']", e.id)).data('tmpl_data', e);
}
这并不理想,因为我一直在寻找一种在模板渲染期间实现此目的的方法,因此我不必进行额外的循环,但这确实可以。
我正在从服务器检索列表 json 数据,该数据使用 jquery 模板呈现到 table 行中。例如:
<script id="entry_tmpl" type="text/x-jquery-tmpl">
<tr class="row_data" name="${id}>
<td class="col_name">${name}</td>
<td class="col_number">${number}</td>
</tr>
</script>
我用标准方式渲染它:
$("#entry_tmpl").tmpl(entries).appendTo(someNode);
到目前为止没有什么特别的。现在请注意,除了 'name' 和 'number' 之外,我在数据对象中还有一些额外的数据,它们不是由模板呈现的。我希望稍后能够在 javascript 中访问这些属性。所以我想找到一种方法来保存每个渲染音符的原始数据。所以稍后我可以做这样的事情:
var elmentObj = $("#row_data[name='5']").prop('obj_data');
var other_data = elementObj['other_data'];
实现这样的目标的最佳方法是什么?我在网上四处搜索,但找不到能满足我的要求的解决方案。
因此,在使用 jquery .data():
填充 table 之后,我最终只是自己在循环中设置数据for (var i=0; i<entries.length; ++i) {
var e = entries[i];
$(_.str.sprintf("#entry_tmpl .row_data[name='%s']", e.id)).data('tmpl_data', e);
}
这并不理想,因为我一直在寻找一种在模板渲染期间实现此目的的方法,因此我不必进行额外的循环,但这确实可以。