jQuery 模板 - 将数据关联到模板 DOM 元素
我正在使用 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 的 data 函数能够将每个行项关联回一个标识符以进行更新。
通常你可以这样做:
$.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'));
});
但是在模板化时你没有这种类型的控制。
注意:我不想使用新的隐藏元素在每行上存储此数据,或者在元素上存储其他属性(如果不需要)。想法
?
谢谢
I am using jQuery's template plugin rendering several row items similiar to this:
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" );
I am wondering if it is possible to make use of jQuery's data function to be able to associate each row item back to an identifier for updating.
Normally you could do something like this:
$.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'));
});
However you don't have this type of control when templating.
Note: I'd rather not use new hidden elements to store this data on each row, or additional attributes on the elements if I don't have to.
Ideas?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
jQuery 模板插件包含 tmplItem 函数,该函数允许您返回与由模板呈现的任何元素。
因此,您可以执行以下操作:
在这种情况下
client
将是您的数据:示例如下:http://jsfiddle.net/rniemeyer/fvhj4/
The jQuery Templates plugin includes the tmplItem function that allows you to get back to the actual data associated with any element rendered by a template.
So, you would be able to do something like:
In this case
client
would be your data:Sample here: http://jsfiddle.net/rniemeyer/fvhj4/
这可能是一个解决方法:
希望这会有所帮助。
干杯
This could be a workaround:
Hope this helps.
Cheers