【发布时间】:2013-01-03 13:40:02
【问题描述】:
正如您最近在我的问题历史中看到的那样,我正在尝试理解 Jquery/Javascript :) 我遇到了以下问题,并想向你们提出。
我有下表(注意:这是检查元素抓取的 HTML,我不确定为什么 style="background-color: rgb(255, 255, 255); 存在..):
<table class="table table-striped table-condensed" id="instance-table">
<thead>
<tr id="checkrow">
<th><input type="checkbox" id="checkall"></th>
<th>Column A</th>
<th>Column A</th>
<th>Column A</th>
</tr>
</thead>
<tbody id="instanceInnerContent">
<tr style="background-color: rgb(255, 255, 255);">
<td class="act"><input type="checkbox"></td>
<td>Value 1</td>
<td>Value 2</td>
</tr>
<tr style="background-color: rgb(255, 255, 255);">
<td class="act"><input type="checkbox"></td>
<td>Value 1</td>
<td>Value 2</td>
</tr>
</tbody>
</table>
并使用以下代码选择行或全部选择或单击行时选择:
// if user clicks on checkbox with id="checkall" - all checkboxes are selected
// and table row background is highlighted
$('body').on('click', '#checkall', function () {
$('input:checkbox:not(#checkall)').prop('checked',this.checked);
if ($(this).is(':checked') == true) {
$("#instance-table").find('tr:not(#checkrow)').css("background-color","#ccc");
//$('#instance-action').removeAttr('disabled');
} else {
$("#instance-table").find('tr:not(#checkrow)').css("background-color","#fff");
//$('#instance-action').attr('disabled', 'disabled');
}
});
// if user clicks on checkbox, diffrent than checkbox with id="checkall" ,
// then checkbox is checked/unchecked
$('body').on('click', 'input:checkbox:not(#checkall)', function () {
if($("#checkall").is(':checked') == true && this.checked == false) {
$("#checkall").prop('checked',false);
$(this).closest('tr').css("background-color","#ffffff");
}
if(this.checked == true) {
$(this).closest('tr').css("background-color","#ccc");
//$('#instance-action').removeAttr('disabled');
// function to check/uncheck checkbox with id="checkbox"
CheckSelectAll();
}
if(this.checked == false) {
$(this).closest('tr').css("background-color","#ffffff");
//$('#instance-action').attr('disabled', 'disabled');
}
});
// if user clicks, someware on table row, checkbox is checked/unchecked
// and table row background is highlighted or not
$('body').on('click', '#instance-table tbody tr', function () {
var this_row = $(this);
var checkbox = this_row.find('input:checkbox');
if (event.target.type !== 'checkbox') {
if ( checkbox.is(':checked') == false ) {
checkbox.prop('checked', true);
this_row.css("background-color","#ccc");
//$('#instance-action').removeAttr('disabled');
CheckSelectAll();
} else {
checkbox.prop('checked', false);
this_row.css("background-color","#fff");
//$('#instance-action').attr('disabled', 'disabled');
CheckSelectAll();
}
}
});
function CheckSelectAll() {
var flag = true;
$('input:checkbox:not(#checkall)').each(function() {
if(this.checked == false)
flag = false;
//console.log(flag);
});
$("#checkall").attr('checked',flag);
}
但不知何故,条纹表行没有突出显示,怎么会? 虽然代码已经在这里,但我也有一个问题,如果我手动检查每一行,它不会检查 checkall 复选框。当我手动检查 checkall 复选框,取消选中每个复选框,然后再次手动检查每一行时,它会起作用。我找不到错误。
【问题讨论】:
-
那么您的问题是
style="background-color: rgb(255, 255, 255);"被添加到一行或者该行没有突出显示? -
对不起,真正的问题是,当检查该行时,由引导程序条带化的行没有突出显示。曾经是白色的作品。我只是不确定
style="background-color: rgb(255, 255, 255);"是否增加了问题。 -
你还没有为你的表格添加样式,所以我认为它给了它一个默认的白色背景! rgb(255, 255, 255) = 白色:P
-
@AspiringAqib 好吧,我使用引导程序的 .table-striped 类(参考:twitter.github.com/bootstrap/base-css.html#tables,搜索“.table-striped”)所以我的表看起来实际上是这样的。当我单击行、复选框或选中复选框时,所有白色行都会改变颜色。 #ddd 一次不是。
-
好吧,通过 css nth-child 属性你可以实现这个!例如
td:nth-child(odd) { background:#ccc; }
标签: javascript jquery twitter-bootstrap