0

我如何构建我的表:

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");
    }
});
4

2 回答 2

2

尝试这个

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

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

$('.modtagerRow input[type="checkbox"]').not(':checked').closest('tr').addClass('hideForSendMailConfirm');
于 2013-11-05T09:51:47.387 回答
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");

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

但是这里也不需要循环,你可以这样做:

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

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

于 2013-11-05T09:56:29.807 回答