我有一个表格,其中每行都有一个复选框。
此代码适用于另一个表:
jQuery('#my_table_id tr').has(':checkbox:checked').closest('tr').each(function() {
request_arr[i] = jQuery(this).attr('id');
i++;
});
现在在这种情况下,我有一个表对象:
var tbl = $('#my_table') // In my code, this is done dynamically
// This does not work
jQuery(tbl + 'tr').has(':checkbox:checked').closest('tr').each(function() {
request_arr[i] = jQuery(this).attr('id');
i++;
});
如何使用tbl
等表格对象获取已检查的行?
我尝试了各种下钻,但我无法工作。
更新
这就是我设置html的方式:
<table id="t1"></table>
<div class="bulk_action">
<div title="Remove requests" class="trash_iconset_grey_16px removeRequest"></div>
<div title="some other button" class="abc"></div>
</div>
<table id="t2"></table>
<div class="bulk_action">
<div title="Remove requests" class="trash_iconset_grey_16px removeRequest"></div>
<div title="some other button" class="abc"></div>
</div>
单击表1下方的“按钮”,将设置tbl = <table id="t1">
。
@elcanrs解决方案还将获取表nr 2中的已检查行。我只想为表nr 1检查行。
答案 0 :(得分:3)
jQuery(tbl + 'tr')
与$($('#my_table') + 'tr')
相同,这没有任何意义。这样做:
tbl.find('tr')
答案 1 :(得分:0)
不是jQuery(tbl + ' tr')
来计算表格ID和tr
之间的空格吗?
答案 2 :(得分:0)
jQuery(tbl + ' tr')
不正确,因为您正在尝试将对象与字符串组合在一起。 你应该使用find方法查找选中的复选框,然后向上移动到第一个tr标签。尝试使用:
tbl.find(':checkbox:checked').closest('tr').each(...);