.each for:选中的选择器无法正常工作

时间:2012-03-15 20:02:28

标签: jquery

$('#deleteMessage').click(function () {
    $.each('input:checked', function () {
        var tr = $(this).closest('tr');
        alert(tr.id);
    });
});

这是HTML:

<tr>
    <th width="40">&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;<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。我似乎无法让这个工作。

6 个答案:

答案 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'));
    });
});​

JS Fiddle demo

似乎可以工作,但由于你没有指明它“以何种方式起作用”,所以很难肯定地说。

答案 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