如果选中复选框,则更改tr类

时间:2011-08-19 11:02:22

标签: jquery

我有一个包含以下行的表:

<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>的类以表示已选择,以便用户知道他们选择了哪一行。注意:他们可以打开和关闭这些!

3 个答案:

答案 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');
});

我希望这可以帮到你