-1

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

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

DemoTable是一个有id, name, 和details变量的类。

我使用 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');
}
} );

我希望此警报提供DemoTableid,但此警报未显示。此外,此单击仅适用于表格的第一行。

单击复选框时如何获取 DemoTable id?

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

4

1 回答 1

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

  2. 您的表格行甚至没有ID。然而,它们确实有一个隐式索引。

  3. 你应该给你的桌子一个ID

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

试试这个:

$('#myTable').on('click', '.isDelete', function(){
    if (this.checked) {
        var rowId = $(this).closest('tr').index();  // row within table (0 based)
    }
});
于 2013-04-27T10:23:33.463 回答