$('#deleteMessage').click(function () {
$.each('input:checked', function () {
var tr = $(this).closest('tr');
alert(tr.id);
});
});
这是HTML:
<tr>
<th width="40"> <input type="checkbox" name="checkAll"></th>
<th width="120">From</th>
<th width="500">Subject</th>
<th width="140">Date</th>
</tr>
<tr replytoid="3" messageid="2664" id="15" class="messageNew">
<td> <input type="checkbox" name="checkAll"></td>
<td>John Doe</td>
<td>asd</td>
<td>3/14/2012 1:09:04 PM</td>
</tr>
我需要这个循环遍历每个复选框(不包括<th>
内的那个)。然后我需要它来找到<tr>
内的复选框,并获取该ID。我似乎无法让这个工作。
答案 0 :(得分:4)
您未在此方案中使用$.each
的正确版本。试试这个:
$('#deleteMessage').click(function () {
$('input:checked').each(function () {
var tr = $(this).closest('tr');
alert(tr[0].id);
});
});
此外,tr
是一个jquery对象,使用[0]
或.get(0)
返回dom元素以获取它的ID属性。
答案 1 :(得分:2)
你需要这样做
$('input:checked').each(function(i, input) {
var tr = $(input).closest('tr');
alert(tr.attr('id'));
});
答案 2 :(得分:1)
问题在于,使用您的代码:
$('#deleteMessage').click(function () {
$.each('input:checked', function () {
var tr = $(this).closest('tr');
alert(tr.id);
});
});
tr
变量是一个jQuery对象,要获得id
,您需要使用attr()
方法:
$('#deleteMessage').click(function () {
$.each('input:checked', function () {
var tr = $(this).closest('tr');
alert(tr.attr('id'));
});
});
此外,您对each()
的使用也存在问题。如果您修改为以下内容:
$('#deleteMessage').click(function() {
$('input:checked').each(function() {
var tr = $(this).closest('tr');
console.log(tr.attr('id'));
});
});
似乎可以工作,但由于你没有指明它“以何种方式起作用”,所以很难肯定地说。
答案 3 :(得分:1)
$.each()
和.each()
不同。您希望使用.each()
迭代jquery对象。
$('input:checked').each(function(idx, el){
// Stuff
});
答案 4 :(得分:1)
尝试:
$('#deleteMessage').click(function () {
$('td input:checked').each(function () {
var tr = $(this).closest('tr');
alert(tr.id);
});
});
遍历每个选中的输入。将td添加到选择器将排除<th>
答案 5 :(得分:-1)
您可能需要tr.prop('id')
而不是tr.id
。