我使用jTemplates插件在我的表格上加载数据。因为有一些属性我还没有显示,我希望以后可以使用,我将它们保存在隐藏的字段中,然后通过CSS的类名和jQuery的siblings
方法获取它们。
这是执行此类操作的正确方法,还是会被视为可怕的代码?
<script type="text/javascript">
$(function() {
$("#edit").click(function(e) {
e.preventDefault();
var $this = $(this);
var date = {
Id: $this.siblings(".tid").val(),
StartDate: $this.siblings(".tdate1").val(),
EndDate: $this.siblings(".tdate2").val(),
ClientId: $this.siblings(".tclient").val(),
UserId: $this.siblings(".tuser").val()
};
processDate(date);
});
});
</script>
<textarea id="template" class="ui-helper-hidden">
<table id="dates">
<thead>
<tr>
<th>Id</th>
<th>Start Date</th>
<th>End Date</th>
<th>Client</th>
<th></th>
</tr>
</thead>
<tbody>
{#foreach $T as record}
<tr>
<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 id="edit">Edit</button>
<input type="hidden" class="tid" value='{ $T.record.Id }' />
<input type="hidden" class="tdate1" value='{ $T.record.StartDate }' />
<input type="hidden" class="tdate2" value='{ $T.record.EndDate }' />
<input type="hidden" class="tclient" value='{ $T.record.Client.Id }' />
<input type="hidden" class="tuser" value='{ $T.record.User.Id }' />
</td>
</tr>
{#/for}
</tbody>
</table>
</textarea>
建议很乐意接受。 :)
答案 0 :(得分:2)
你有什么作品,虽然你也可以这样使用data attributes:
{#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...
});
请注意对编辑按钮的更改...您应该在此处使用类而不是ID,因为它已重复。
作为旁注,由于主分支中的recent change,在 jQuery 1.5 中,您将能够执行.data("tuser")
而不是.attr("data-tuser")
答案 1 :(得分:0)
恕我直言,这是从服务器生成数据时存储数据的完全可接受的方式。另一种选择是在表行上生成data-
属性。两者都是存储数据的有效方法,后者可能稍好一些。
答案 2 :(得分:0)
正如我所看到的,如果它有效,那么功能就像你描述的那样微不足道。至于在隐藏字段中保存您的值 - 这可以更优化地完成。您可以尝试将值保存到变量中。然后检索它们会更简单,你不必遍历DOM来检索它们。