如何使用Jquery获取表id?

时间:2013-04-27 10:17:41

标签: javascript java jquery html html-table

在我的Java程序中,我有List<DemoTable>

List<DemoTable> demotable = new ArrayList<DemoTable>();

DemoTable是一个包含idnamedetails变量的类。

我使用Jquery显示这些细节..

<table>
  <c:forEach items="${modalAttribute.demotable}" var="demo">
    <tr class="M_row_bg M_read">
         <td><input type="checkbox" id="isDelete"/></td>
         <td><label for="name">${demo.name}</label></td>
             <td><label for="totalExperience">${demo.details}</label></td>
       </tr>
  <c:forEach>
</table>

数据将正确显示...但是当单击复选框时,我想获得表行ID:

$("#isDelete").click(function(){
if (this.checked){
   alert('checked');
   alert(demo.id);
} else {
    alert('unchecked');
}
} );

我希望此提醒能够提供DemoTable ID,但此警报不会显示。此外,此单击仅适用于表的第一行。

单击复选框后,如何获取DemoTable ID?

我的代码需要处理每一行表单击事件,而不仅仅是第一行?

1 个答案:

答案 0 :(得分:1)

  1. 您在表格中多次使用#isDelete。这是非法的,也是您的代码仅适用于第一行的原因。改为使用课程。

  2. 您的表格行甚至没有拥有 ID。但它们确实有一个隐含的索引。

  3. 你应该给你的表一个ID

  4. 您可以使用“事件委托”,只需在公共父元素(即表)上注册单击处理程序,然后使用事件冒泡来确定单击了哪个实际元素。这比在每个匹配元素上显式注册完全相同的事件处理程序更有效。

  5. 请改为尝试:

    $('#myTable').on('click', '.isDelete', function(){
        if (this.checked) {
            var rowId = $(this).closest('tr').index();  // row within table (0 based)
        }
    });