0

このトピックは、1 つのチェックボックスのみについて詳しく説明されています。私の問題は、赤または白のチェックボックスが少なくとも 1 つチェックされている場合、テーブルの行を強調表示する必要があることです。したがって、何もチェックされていない場合は赤を強調表示しますが、少なくとも 1 つがチェックされている場合は白を強調表示します。私はこのコードを持っています:

$("input:checkbox").live("change", function (event) {
    $("tr checkbox").each(function () {
        if ($(this).attr('checked')) {
            $(this).closest('tr').addClass('white');
        } else {
            $(this).closest('tr').removeClass('white');
        }
    });
});

html は基本的に、2 つのデータと 7 つのチェックボックスを含むテーブル行です。何もチェックされていない場合は赤で強調表示されますが、少なくとも 1 つがチェックされている場合は白で強調表示されます。

前もって感謝します。

編集:

.live() から .on() にスワップしたため、ティックボックスが動的にロードされていることがわかりました。関数を非動的要素にバインドする必要がありました。これは、最後に使用したコードです。

$("#emaillistbox").on("change","input:checkbox", function (event) {
var $tr = $(this).closest("tr");
if($tr.find("input:checked").length > 0)
{
    $tr.removeClass('red').addClass('white');
}else {
    $tr.removeClass('white').addClass('red');
}
});

emaillistbox動的コンテンツがロードされる div の名前です。

4

6 に答える 6

1

これを行うには、フラグ変数を使用してみてください。これ.live()は非推奨です。.on()を使用してみてください

$(document).on("change","input:checkbox", function (event) {
   var flag = true;
    $("tr checkbox").each(function () {
        if (!$(this).attr('checked')) 
           flag = false;

    });

    if(flag == true)
         $(this).closest('tr').addClass('white');
    else
          $(this).closest('tr').removeClass('white');

});
于 2013-06-12T10:05:01.207 に答える