在我的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');
}
} );
我希望此提醒能够提供DemoTable
ID,但此警报不会显示。此外,此单击仅适用于表的第一行。
单击复选框后,如何获取DemoTable ID?
我的代码需要处理每一行表单击事件,而不仅仅是第一行?
答案 0 :(得分:1)
您在表格中多次使用#isDelete
。这是非法的,也是您的代码仅适用于第一行的原因。改为使用课程。
您的表格行甚至没有拥有 ID。但它们确实有一个隐含的索引。
你应该给你的表一个ID
您可以使用“事件委托”,只需在公共父元素(即表)上注册单击处理程序,然后使用事件冒泡来确定单击了哪个实际元素。这比在每个匹配元素上显式注册完全相同的事件处理程序更有效。
请改为尝试:
$('#myTable').on('click', '.isDelete', function(){
if (this.checked) {
var rowId = $(this).closest('tr').index(); // row within table (0 based)
}
});