我在寻找以下 jquery/checkbox 行为的原因时遇到问题。
$( this.obj + ' table.sgrid-content > thead > tr > th > input.select_all' ).on( 'click' , {grid:this} , function(event){
var grid = event.data.grid;
if( $(this).is(':checked') ){
$( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).attr('checked','checked');
$( grid.obj + ' .sgrid-content > tbody > tr > td > input.select ' ).parents('tr').addClass('ui-state-highlight');
} else {
$( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).removeAttr('checked');
$( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).parents('tr').removeClass('ui-state-highlight');
}
});
该代码的工作原理如下: - 单击 input.select_all 触发事件 - 如果 input.select_all 被选中:将选中的属性添加到 table.sgrid-content 中标记为 .select 的所有复选框 - 如果不是:删除“选中” ' 所有 input.select 项目的属性。
另一个简单的网格函数。它有效。奇怪的是,它只工作一次。我的意思是,您可以选择所有复选框并取消选择它们。之后,“全选”功能停止工作。
另一个奇怪的事情是,当我用 firebug 检查 dom 元素时,它们都变成了应该的 check='checked' attr,但它们的显示和行为就像没有被检查一样。
选择器可以正常工作。添加/删除ui-state-highlight的代码部分一直有效。
解释的词: grid - 是我传递给 grid.obj 的对象(基本上是某个 div 的 ID)
请给我你的意见。