论坛首页 Web前端技术论坛

jQuery全选反选插件的写法

浏览 2589 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-08-27  

 

jQuery全选反选插件,经易让你实现一个表单列表数据的全选与取消全选功能,内含示例,小巧实用。自动判断当前选中数量,加上全选。在没有jQuery之前,我们需要一大段js代码来实现这种效果。有了jQuery这个强大的库之后,我们可以很方便的开发实现这种效果的jQuery插件。我将它命名为jQuery.fn.check插件。前端框架分享

在构建我们的插件之前,我们想考虑一下其功能需求:

所有复选框的状态都随全选复选框的状态而发生变化;如果所有复选框都被选中时,全选复选框立即处于选中状态;如果当前选中复选框的数量小于复选框的总数时,全选复选框立即处于非选中状态; 所以,在那些处于全选复选框控制之下的复选框全被点击时,就需要时刻判断当前被选中复选框的个数,从而决定全选复选框是否被选中。

如有如下复选框:

<p><input type="checkbox" name="checkall" />全选</p>
<p><input type="checkbox" name="check" />单选1</p>
<p><input type="checkbox" name="check" />单选2</p>
<p><input type="checkbox" name="check" />单选3</p>

 jQuery全选返选插件及调用如下。前端框架分享

$(function () { 
    //调用全选插件
    $.fn.check({ checkall_name: "checkall", checkbox_name: "check" })
});
//全选插件
//checkall_name   操作全选的复选框name
//checkbox_name   被操作的复选框的name  name值可不统一 设置包含值 以XXX开头 自己修改
(function ($) {
    $.fn.check = function (options) {
        var defaults = {
            checkall_name: "checkall_name", //全选框name
            checkbox_name: "checkbox_name" //被操作的复选框name
        },
        ops = $.extend(defaults, options);
        e = $("input[name='" + ops.checkall_name + "']"), //全选
        f = $("input[name='" + ops.checkbox_name + "']"), //单选
        g = f.length; //被操作的复选框数量
        f.click(function () {
            $("input[name ='" + ops.checkbox_name + "']:checked").length == $("input[name='" + ops.checkbox_name + "']").length ? e.attr("checked", !0) : e.attr("checked", !1);
        }), e.click(function () {
            for (i = 0; g > i; i++) f[i].checked = this.checked;
        });
    };
})(jQuery);

 

 

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics