jQuery template -关联数据到模板DOM元素
jQuery Templating - Associating data to template DOM elements
我正在使用jQuery的模板插件渲染几个类似于这样的行项:
var clientData = [
{ name: "Rey Bango", id: 1 },
{ name: "Mark Goldberg", id: 2 },
{ name: "Jen Statford", id: 3 } ];
<script id="clientTemplate" type="text/html">
<li><${name}</li>
</script>
$("#clientTemplate").tmpl(clientData).appendTo( "ul" );
我想知道是否有可能利用jQuery的数据函数能够将每个行项关联回一个标识符进行更新。
通常你可以这样做:
$.each(clientData, function(idx, item) {
$('<li></li>').appendTo('ul#clientTemplate')
.text(item.name)
.data('clientId', item.id);
});
$('ul#clientTemplate li').click(function() {
updateClient($(this).data('clientId'));
});
但是,在模板化时没有这种类型的控制。
注意:如果没有必要,我宁愿不使用新的隐藏元素来存储每一行的数据,或者在元素上添加额外的属性。
想法?
谢谢
jQuery模板插件包含tmplItem函数,该函数允许您返回与模板呈现的任何元素相关的实际数据。
所以,你可以这样做:
var client = $("li").first().tmplItem().data
在这种情况下,client
将是您的数据:
{ name: "Rey Bango", id: 1 }
示例如下:http://jsfiddle.net/rniemeyer/fvhj4/
这是一个变通方法:
$("#clientTemplate").tmpl(clientData).filter("li").each(function(i){
$(this).data(clientData[i].id);
}).appendTo( "ul" );
希望这对你有帮助。欢呼声
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素