博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

jQuery实现点击复选框即高亮显示选中行 全选、反选

Posted on 2012-02-25 19:27  快乐家++  阅读(3311)  评论(0编辑  收藏  举报
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>jQuery实现点击复选框即高亮显示选中行 全选、反选</title>
 <style type="text/css">
 table
{ border:0;border-collapse:collapse;}
 td
{ font:normal 12px/17px Arial;padding:2px;width:100px;}
 th
{ font:bold 12px/17px Arial;text-align:left;padding:4px;border-bottom:1px solid #333;}
 .even
{ background:#FFF38F;}  /* 偶数行样式*/
 .odd
{ background:#FFFFEE;}  /* 奇数行样式*/
 .selected
{ background:#FF6500;color:#fff;}
 
</style>
<script src="res/jquery-1.7.1.min.js" type="text/javascript"></script>
 <script type="text/javascript">
 
//插件编写
 (function ($) {
     $.fn.extend({
         
"alterBgColor"function (options) {
             
//设置默认值
             options = $.extend({
                 odd: 
"odd"/* 偶数行样式*/
                 even: 
"even"/* 奇数行样式*/
                 selected: 
"selected" /* 选中行样式*/
             }, options);
             $(
"tbody>tr:odd"this).addClass(options.odd);
             $(
"tbody>tr:even"this).addClass(options.even);
             $(
'tbody>tr'this).click(function () {
                 
//判断当前是否选中
                 var hasSelected = $(this).hasClass(options.selected);
                 
//如果选中,则移出selected类,否则就加上selected类
                 $(this)[hasSelected ? "removeClass" : "addClass"](options.selected)
                 
//查找内部的checkbox,设置对应的属性。
      .find(':checkbox').attr('checked'!hasSelected);
             });


             
//表头中的checkbox (全选 反选)
             $("thead>tr th:first :checkbox:first ").click(function () {
                 
//判断当前是否选中
                 var hasSelected = $(this).attr("checked");
                 
//如果选中,则移出selected类,否则就加上selected类
                 $('tbody>tr')[!hasSelected ? "removeClass" : "addClass"](options.selected);
                 
if (hasSelected)
                     $(
'tbody>tr :checkbox').attr("checked",true);
                 
else
                    $(
'tbody>tr :checkbox').attr("checked",false);
             });
             
// 如果单选框默认情况下是选择的,则高色.
             $('tbody>tr:has(:checked)'this).addClass(options.selected);
             
return this;  //返回this,使方法可链。
         }
     });
 })(jQuery);

 
//插件应用
 $(function(){
  $(
"#table2")
    .alterBgColor()  
//应用插件
    .find("th").css("color","red");//可以链式操作
 });

</script>
</head>
<body>
<table id="table2">
 <thead><tr><th><input type="checkbox"/><input type="checkbox" onselect="javascript:alert('kdkdkd');"/></th><th>姓名</th><th>性别</th><th>暂住地</th></tr></thead>
 <tbody>
  <tr>
   <td><input type="checkbox" name="choice" value=""/></td>
   <td>张三</td>
   <td></td>
   <td>浙江宁波</td>
  </tr>
  <tr>
   <td><input type="checkbox" name="choice" value="" /></td>
    <td>李四</td>
   <td></td>
   <td>浙江杭州</td>
  </tr>
  <tr>
   <td><input type="checkbox" name="choice" value="" checked="checked" /></td>
     <td>王五</td>
   <td></td>
   <td>湖南长沙</td>
  </tr>
  <tr>
   <td><input type="checkbox" name="choice" value="" /></td>
   <td>赵六</td>
   <td></td>
   <td>浙江温州</td> 
  </tr>
  <tr>
  <td><input type="checkbox" name="choice" value="" /></td>
    <td>Rain</td>
   <td></td>
   <td>浙江杭州</td>
  </tr>
  <tr>
   <td><input type="checkbox" name="choice" value="" checked="checked" /></td>
   <td>MAXMAN</td>
   <td></td>
   <td>浙江杭州</td>
  </tr>
 </tbody>
</table>
</body>
</html>