循环访问我的表格,如何知道是否选中了复选框?

时间:2013-11-05 09:50:06

标签: javascript jquery html css

我如何构建我的表:

for (var i = 0; i < result.length; i++) {
    var item = result[i];

    // Firma, BygningselementNavn, BrugerNavn, EmailAdresse, Telefon
    tbody = tbody + '<tr class="modtagerRow"><td>' + item.FirmaNavn + '</td>' +
                                '<td>' + item.BygningselementNavn + '</td>' +
                                '<td>' + item.BrugerNavn + '</td>' +
                                '<td>' + item.EmailAdresse + '</td>' +
                                '<td>' + item.Telefon + '</td>'
    // Medtag
    tbody = tbody + '<td style="text-align:center"><input type="checkbox" 
            value="' + item.BygningselementId + '_' + item.BrugerId + '" 
            name="BygningsElementBrugerComboIds"></td>' + '</tr>';
}
$('#ModtagereTable tbody').append(tbody)

我是如何尝试遍历行并将CSS类添加到已选中复选框的行。

1)我获得了控制台的索引,但我不能为所有选中的复选框设置if条件。

2)我还不确定在添加课程$( this )时我是否可以.hideForSendMailConfirm或我应该使用其他内容?

// Looping rows in table
$( ".modtagerRow" ).each(function(index, element) {
    console.log('index: ' + index);
    // if
    if (element.checked) {
        $( this ).addClass(".hideForSendMailConfirm");
    }
});

2 个答案:

答案 0 :(得分:2)

试试这个

$('.modtagerRow input:checked').closest('tr').addClass('hideForSendMailConfirm');

将类添加到未选中的行。您可以使用.not()

$('.modtagerRow input[type="checkbox"]').not(':checked').closest('tr').addClass('hideForSendMailConfirm');

答案 1 :(得分:1)

您的代码:

$(".modtagerRow").each(function (index, element) {
    if (element.checked) {
        $(this).addClass(".hideForSendMailConfirm");
    }
});

实际上循环遍历具有类modtagerRow的表行,并且表行没有任何checked属性,因此您的代码无效。

您可以这样做:

$(".modtagerRow :checkbox").each(function (index, element) {
    if (element.checked) {
        $(this).closest(".modtagerRow").addClass("hideForSendMailConfirm");
    }
});

这将遍历表格行中的所有checkbox元素,并检查是否已选中,并添加相应的hideForSendMailConfirm类。

您的代码中还有一个问题:

.addClass(".hideForSendMailConfirm");

为了添加一个类,不需要添加.作为前缀,我们只需传递类名。

但是再次没有必要在这里循环,你可以这样做:

 $(".modtagerRow :checkbox:checked").closest('tr').addClass('hideForSendMailConfirm');

因为,当我们调用jQuery对象的方法时,我们传递给$()的选择器引用的元素会自动循环地循环。因此,我们通常可以避免显式迭代,例如each()循环。