一个简单的全选,反选Jquery插件

在实际开发中全选操作会经常用到,这里简单的写了个Jquery的全选插件,方便以后直接调用。

/* 
* jQuery lightweight plugin CheckAll 
* Original author: Suifengshiqu 
* Further changes, comments: lvbo1988@gmail.com 
*/ 
   
/* 表格全选插件 */ 
   
/* 使用方法 */ 
/* 
    $("#tab").CheckAll({ valueField: "txtTest", chkId: "chkall", splitExp: "|", valueIndex: 0 }); 
*/ 
   
(function ($) {  
    $.fn.extend({  
        CheckAll: function (options) {  
            var defaults = {  
                valueField: null,   //默认选中后的赋值字段  
                chkId: "c_all",     //全选框的Id  
                splitExp: "_",      //字段分隔符号  
                valueIndex: 1       //分割后取值的索引下标  
            };  
            var options = $.extend(defaults, options);  
            obj = $(this); //默认为table  
            function _getSelectedValue() {  
                var values = "";  
                $("#" + obj.attr("Id") + " :checked").each(function () {  
                    if ($(this).attr("id") != options.chkId) {  
                        values += $(this).attr("id").split(options.splitExp)\[options.valueIndex\] + ",";  
                    }  
                });  
                if (values.length > 0)  
                    return values.substring(0, values.length - 1);  
                return values;  
            }  
            return this.each(function () {  
                var subExp = "#" + obj.attr("Id") + " :checkbox";  
                var chks = $(subExp + ":gt(0)");  
                var checkedCount = 0;  
                chks.each(function () {  
                    $(this).click(function () {  
                        if ($(this).attr("checked")) {  
                            checkedCount += 1;  
                        } else {  
                            checkedCount -= 1;  
                        }  
                        if (checkedCount < chks.length) {  
                            $("#" + options.chkId).attr("checked", false);  
                        } else {  
                            $("#" + options.chkId).attr("checked", true);  
                        }  
                        $("#" + options.valueField).val(_getSelectedValue());  
                    });  
                });  
                $("#" + options.chkId).click(function () {  
                    $(subExp).attr("checked", $(this).attr("checked") ? true : false);  
                    $("#" + options.valueField).val(_getSelectedValue());  
                });  
            });  
        }  
    });  
})(jQuery);  
 
 
 
页面调用如下:
\[html\] view plaincopy
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
    <title></title>  
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>  
    <script src="Scripts/jquery.CheckAll.js" type="text/javascript"></script>  
    <script type="text/javascript">  
        $(document).ready(function () {  
            $("#tab").CheckAll({ valueField: "txtTest" });  
        });  
    </script>  
</head>  
<body>  
    <table id="tab">  
        <tr>  
            <td><input type="checkbox" id="c_all" /></td>  
        </tr>  
        <tr>  
            <td><input type="checkbox" id="c_1" /></td>  
        </tr>  
        <tr>  
            <td><input type="checkbox" id="c_2" /></td>  
        </tr>  
        <tr>  
            <td><input type="checkbox" id="c_3" /></td>  
        </tr>  
        <tr>  
            <td><input type="checkbox" id="c_4" /></td>  
        </tr>  
    </table>  
    <input type="text" id="txtTest" />  
    <span onclick="alert(txtTest.value);">查看选中项</span>  
</body>  
</html>