Javascript 在表上保存隐藏数据的正确方法是什么?
我使用插件在我的表上加载数据。因为有些属性我还没有显示出来,我希望以后可以使用,所以我将它们保存在隐藏字段中,然后通过CSS的类名和jQuery的Javascript 在表上保存隐藏数据的正确方法是什么?,javascript,jquery,html,jtemplate,Javascript,Jquery,Html,Jtemplate,我使用插件在我的表上加载数据。因为有些属性我还没有显示出来,我希望以后可以使用,所以我将它们保存在隐藏字段中,然后通过CSS的类名和jQuery的同级方法来获取它们 这是执行此类操作的正确方法,还是会被视为可怕的代码 $(函数(){ $(“#编辑”)。单击(功能(e){ e、 预防默认值(); var$this=$(this); 变量日期={ Id:$this.sibbines(“.tid”).val(), StartDate:$this.sides(“.tdate1”).val(), End
同级方法来获取它们
这是执行此类操作的正确方法,还是会被视为可怕的代码
$(函数(){
$(“#编辑”)。单击(功能(e){
e、 预防默认值();
var$this=$(this);
变量日期={
Id:$this.sibbines(“.tid”).val(),
StartDate:$this.sides(“.tdate1”).val(),
EndDate:$this.sides(“.tdate2”).val(),
ClientId:$this.sides(“.tclient”).val(),
UserId:$this.sibbins(“.tuser”).val()
};
处理日期(日期);
});
});
身份证件
开始日期
结束日期
客户
{#每$T作为记录}
{$T.record.Id}
{formattate($T.record.StartDate)}
{formattate($T.record.EndDate)}
{$T.record.Client.Name}
编辑
{#/for}
建议将被欣然接受。:) 你所拥有的一切都是有效的,不过你也可以这样使用:
{#foreach $T as record}
<tr data-tid="{ $T.record.Id }" data-tdate1="{ $T.record.StartDate }" data-tdate2="{ $T.record.EndDate }" data-tclient="{ $T.record.Client.Id }" data-tuser="{ $T.record.User.Id }">
<td>{ $T.record.Id }</td>
<td>{ formatDate($T.record.StartDate) }</td>
<td>{ formatDate($T.record.EndDate) }</td>
<td>{ $T.record.Client.Name }</td>
<td>
<button class="edit">Edit</button>
</td>
</tr>
{#/for}
请注意编辑按钮的更改…这里应该使用类而不是ID,因为它是重复的
作为旁注,由于主分支中有一个,在jquery1.5中,您可以执行.data(“tuser”)
而不是.attr(“data tuser”)
IMHO,这是从服务器生成数据时存储数据的一种完全可以接受的方式。另一个选项是在表行上生成数据-
属性。这两种方法都是存储数据的有效方法,后者可能稍好一些。在我看来,如果有效的话,它的功能就像您描述的那样简单。至于在隐藏字段中保存您的值,这可以做得更好。您可以尝试将值保存为变量。然后检索它们会更简单,并且您不必遍历DOM来检索它们。如果浏览器(IE 7)可能不支持它们,那么使用数据
是否会出现兼容性问题?你知道这种方法是否能提高性能效率吗?@Rafael-它肯定会更便宜(创建更少的元素),IE7也没有问题……它在HTML4中没有任何问题,实际上在HTML5的规范中。
{#foreach $T as record}
<tr data-tid="{ $T.record.Id }" data-tdate1="{ $T.record.StartDate }" data-tdate2="{ $T.record.EndDate }" data-tclient="{ $T.record.Client.Id }" data-tuser="{ $T.record.User.Id }">
<td>{ $T.record.Id }</td>
<td>{ formatDate($T.record.StartDate) }</td>
<td>{ formatDate($T.record.EndDate) }</td>
<td>{ $T.record.Client.Name }</td>
<td>
<button class="edit">Edit</button>
</td>
</tr>
{#/for}
$(".edit").click(function() {
var user = $(this).closest("tr").attr("data-tuser");
//do something...
});