我有一个包含以下行的表:
<tr>
<td><input type="checkbox" /></td>
<td><a href="#">School</a></td>
<td><a href="#">DD1 1AB</a></td>
<td>80.10</td>
<td>200</td>
<td><span class="active">Active</span></td>
<td><a href="#">John Doe</a><br/>00000 000000</td>
</tr>
我想要做的是当用户选择了复选框时,更改父<tr>
的类以表示已选择,以便用户知道他们选择了哪一行。注意:他们可以打开和关闭这些!
答案 0 :(得分:6)
$('table').delegate(':checkbox','change',function(){
var $elem = $(this),
$tr = $elem.closest('tr');
if($elem.is(':checked')){
$tr.addClass('highlight');
}else{
$tr.removeClass('highlight');
}
return false;
})
答案 1 :(得分:4)
假设某些复选框可能会预先检查,我会采用这种方法:
// First add class for pre-checked entries
$(".xyz input[type=checkbox]:checked").each(function() {
$(this).closest("tr").addClass("selected");
});
// Then toggle class whenever checkbox state changes
$(".xyz input[type=checkbox]").live("change", function() {
$(this).closest("tr").toggleClass("selected");
});
现场演示:http://jsfiddle.net/cUxmG/
为了减少两次搜索DOM的开销,可以将其合并到:
$(".xyz input[type=checkbox]").live("change", function() {
$(this).closest("tr").toggleClass("selected");
}).filter(":checked").each(function() {
$(this).closest("tr").addClass("selected");
});
它做同样的事情:http://jsfiddle.net/cUxmG/2/
答案 2 :(得分:2)
$('input[type="checkbox"]').click(function(){
if($(this).prop('checked'))
$(this).parent().parent().addClass('your_class');
else
$(this).parent().parent().addClass('your_class');
});
我希望这可以帮到你