代码之家  ›  专栏  ›  技术社区  ›  rebelliard

在表中保存隐藏数据的正确方法是什么?

  •  0
  • rebelliard  · 技术社区  · 14 年前

    我用 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>
    

    建议将被欣然接受。:)

    3 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    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...
    });
    

    recent change .data("tuser") .attr("data-tuser")

        2
  •  0
  •   BBonifield    14 年前

    data-

        3
  •  0
  •   Christopher Tokar    14 年前