现在的位置: 首页 > 综合 > 正文

jQuery表格插件(隔行换色、划过变色、全选)

2012年11月22日 ⁄ 综合 ⁄ 共 4051字 ⁄ 字号 评论关闭
//by:xcl @2012.8  qq:80213876
;(function ($) { 
    $.extend({
        XCLTableList:function(options){
            options = $.extend({},funs.Defaults, options);
            funs.Init(options);
            $(options.tableClass).each(function(){
                $trs=null;
                if($(this).children("tbody").length>0){//浏览器会自动加tbody标签
                    $trs=options.trNoHoverClass==""?$(this).children().children():$(this).children().children().not(options.trNoHoverClass);
                }else{
                    $trs=options.trNoHoverClass==""?$(this).children():$(this).children().not(options.trNoHoverClass);
                }
                //滑过行颜色
                if(options.trHoverColor!=""){
                    $trs.hover(function(){
                        $(this).addClass("XCLTableList_trHover");
                    },function(){
                        $(this).removeClass("XCLTableList_trHover");
                    });
                }
                //单击行颜色
                if(options.trClickColor!=""){
                    $trs.click(function(){
                        $trs.removeClass("XCLTableList_trClick");
                        $(this).addClass("XCLTableList_trClick");
                    });
                }
                //奇偶行颜色
                if(options.trEvenColor!=""){
                    $trs.each(function(i){
                        if(i%2==0){
                            $(this).addClass("XCLTableList_trEven");
                        }
                    });
                }
                if(options.trOddColor!=""){
                   $trs.each(function(i){
                        if(i%2==1){
                            $(this).addClass("XCLTableList_trOdd");
                        }
                    });
                }
                /******表格样式相关结束****/


                /******全选相关开始*****/
                //单击全选时
                $(options.checkAllClass).click(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    if(this.checked){
                        $ckItem.attr({"checked":true});
                    }else{
                        $ckItem.attr({"checked":false});
                    }
                    funs.GetCheckBoxIDs($ckAll,$ckItem);
                });
                //单击列表中的checkbox时
                $(options.checkItemClass).click(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    var flag=1;
                    $ckItem.each(function(){
                        if(!this.checked){
                            flag=0;
                            return false;
                        }
                    });
                    if(flag==1){
                        $ckAll.attr({"checked":true});
                    }else{
                        $ckAll.attr({"checked":false});
                    }
                    funs.GetCheckBoxIDs($ckAll,$ckItem);
                });
                /******全选相关结束*****/

            });
        }
    });
    var funs={
        Defaults:{
            tableClass:".tableList",//table的class
            trHoverColor:"#eee",//行滑过时的颜色
            trClickColor:"",//单击行后的颜色
            trNoHoverClass:".noHover",//无需设置颜色的行class
            trEvenColor:"#ecf7fb",//偶数行的颜色0开始
            trOddColor:"#fff",//奇数行的颜色
            checkAllClass:".checkAll",//全选按钮class
            checkItemClass:".checkItem",//选择框的class
            checkedTrColor:"#fffec9"//选中行的颜色
        },
        Init:function(options){
            //样式
            $("head").append("<style type='text/css'>.XCLTableList_trHover{background:"+options.trHoverColor+"!important;} "+
                                    ".XCLTableList_trClick{background:"+options.trClickColor+"!important;} "+
                                    ".XCLTableList_trEven{background:"+options.trEvenColor+";} "+
                                    ".XCLTableList_trOdd{background:"+options.trOddColor+";}"+
                                    ".XCLTableList_trChecked{background:"+options.checkedTrColor+"!important;}"+
                                    "</style>");
            //当子项都为选中时,此时选中全选项
            $(options.tableClass).each(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    var isAllChecked=1;
                    $ckItem.each(function(){
                        if(!this.checked){
                            isAllChecked=0;return false;
                        }
                    });
                    if(isAllChecked==1){
                        $ckAll.attr({"checked":true});
                    }
            });
        },
        //将列表中的checkbox的value的数组形式存到全选的checkbox的value中
        GetCheckBoxIDs:function(ckAll,ckItem){
            var v=[];
            ckItem.each(function(){
                if(this.checked){
                    $(this).closest("tr").addClass("XCLTableList_trChecked");
                    v.push(this.value);
                }else{
                    $(this).closest("tr").removeClass("XCLTableList_trChecked");
                }
            });
            ckAll.val(v.toString());
        }
    }
})(jQuery);

使用说明
  • $.XCLTableList({options:optionsValue});
使用示例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="table.js"></script>

 </head>

 <body>
  <table class="tableList">
	<tr>
		<td><input type="checkbox" value="" class="checkAll"/></td>
		<td></td>
		<td></td>
	</tr>
	<tr>
		<td><input type="checkbox" value="1" class="checkItem"/></td>
		<td>aaa</td>
		<td>bbb</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="2" class="checkItem"/></td>
		<td>aaa</td>
		<td>bbb</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="3" class="checkItem"/></td>
		<td>aaa</td>
		<td>bbb</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="4" class="checkItem"/></td>
		<td>aaa</td>
		<td>bbb</td>
	</tr>
  </table>
 </body>
 <script type="text/javascript">
var funs={
	Init:function(){
		$.XCLTableList();
	}
};
$(function(){
	funs.Init();
});
 </script>
</html>

抱歉!评论已关闭.