jqGrid を含むページがあります。これはmultiselect:false
、1 つの行だけを選択できるようにする必要があるためですが、複数の行を選択する必要もあります (つまり、多くの行をマークしたいが、アクティブな行は 1 つだけにしたい)。そのため、multiselect:false を使用してグリッドを作成し、列ヘッダーにマスター チェックボックスformatter: 'checkbox'
も作成しました(colNames の列の「名前」は です) 。<input id="cbSelectAll" type="checkbox">
ヘッダーがクリックされたときにすべての行を一度に変更するには、次の関数を作成しました。
$('#cbSelectAll').click(function (e) {
var valor = $(this).is(':checked');
$.each($('#grid input[type="checkbox"]'), function (idx, elm) {
var id = $(elm).closest('tr').attr('id');
var cb = $('#' + id + ' td').children().first();
$(cb).attr('checked', valor);
selectedRows[id] = valor;
});
/* other non relevant code */
});
それが私の問題です。この機能は、チェックボックスの選択を解除しようとするとうまく機能しますが、選択しようとすると、最初にしか機能しません。その後のクリックでは、checked 属性が変更されますが、ボックスは視覚的に変更されません。