jQuery提供了扩展接口jQuery.extend(Object)和jQuery.fn.extend(Object),前者是在jQuery对象上进行扩展(同jQuery的工具方法),而后者是在jQuery对象实例集上进行扩展(通常用于制作jQuery插件)。

1.问题引入:

上图一看就明白了需求。

  • 点击全选,一组复选框全部选中;

  • 取消全选,一组复选框全部未选中;

  • 选中一组复选框中任意一个,如果一组复选框全选中,全选框选中,否则全选框未选中。

2.实现思路

  • 全选框改变时,更加全选框的状态,更新一组复选框状态;

  • 一组复选框中任意一个改变状态时,检查一组复选框的状态,如果检查结果是一组复选框全选中,更新全选框为选中状态,否则更新全选框为未选中状态。

3. 具体实现和使用

下文中通过对jQuery.fn.extend(Object)进行扩展来实现需求,并且使用jQuery.extend(Object)将上述需求扩展为jQuery对象上的一个方法。

HTML页面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<head>
    <title>测试 jQuery extend 方法 和checkbox全选和全取消</title>
    <style type="text/css">
        body {
            background-color: #eef;
        }
        div {
            width: 800px;
            height: 100px;
            font-weight: 10;
        }
    </style>
    <!--<script type="text/javascript" src="../../script/jquery/jquery-1.8.0.js"></script>-->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="../../i_script/jslib/jquery.checkbox.plugins.js"></script>
</head>
<body>
<script type="text/javascript">
    $(document).ready(function () {
        $.checkboxHandler("sport");
    })
</script>
<fieldset>
    <input type="checkbox" id="sport" value="全选"/>全选<br/>
    <input type="checkbox" name="sport" id="c1" value="足球"/><label for="c1">足球</label><br/>
    <input type="checkbox" name="sport" id="c2" value="篮球"/><label for="c2">篮球</label><br/>
    <input type="checkbox" name="sport" id="c3" value="乒乓球"/><label for="c3">乒乓球</label><br/>
    <input type="checkbox" name="sport" id="c4" value="羽毛球"/><label for="c4">羽毛球</label><br/>
</fieldset>
</body>
</html>

说明:

  • 引入JavaScript文件,包括jquery和下面将要封装的功能代码;

  • 页面定义一组复选框,并且单独定义一个复选框(该复选框的id属性值和其要操作的一组复选框的name属性值一致,如上:sport);

  • 全选框和一组复选框具备了如上所述命名规范,即可以作为一个整体操作,完成 1 中需求功能只需要为插件提供一个能够唯一标识这一组复选框的id,如:"sport";

  • 使用时仅需要在页面加载完成后调用jQuery扩展的对象方法jQuery.checkboxHandler(id)即可。

    下面是jQuery扩展实现上述功能的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    /**
     * Created with JetBrains WebStorm.
     * User: http://aiilive.blog.51cto.com
     * Date: 14-3-14
     * Time: 下午2:08
     * 增强jQuery中对checkbox的处理,可以对一组checkbox进行全选,全不选操作
     * 需要jQuery支持
     * -------------Notice-------------
     * 使用jQuery.checkboxHandler(id)方法对一组checkbox添加事件
     * id:
     * id的值是一组类型是checkbox的input的name属性值,
     * 并且作为全选和全不选类型是checkbox的input的id属性值
     *
     * Simple:
     * $(document).ready(function () {
            $.checkboxHandler("sport");
        })
     */
    (function ($) {
        jQuery.fn.extend({
            checkboxSelected: function () {
                var id = $(this).attr('id');
                var flag = (typeof $(this).attr('checked') === 'undefined' ) ? true false;
                $("input[type=checkbox][name=" + id + "]").each(function (i, n) {
                    if (flag) {
                        $(n).removeAttr("checked");
                    else {
                        $(n).attr('checked'"checked");
                    }
                })
            },
            checkboxCheck: function () {
                var id = $(this).attr('name');
                var flag = false;
                $("input[type=checkbox][name=" + id + "]").each(function (i, n) {
                    if (typeof $(n).attr("checked") === 'undefined') {
                        flag = true;
                        return false;
                    }
                })
                if (flag) {
                    $("#" + id).removeAttr("checked");
                else {
                    $("#" + id).attr("checked""checked");
                }
            }
        })
        jQuery.extend({
            checkboxHandler: function (id) {
                $("#" + id).bind("click"function () {
                    $(this).checkboxSelected();
                });
                $("input[type=checkbox][name=" + id + "]").bind("click"function () {
                    $(this).each(function (i, n) {
                        $(n).checkboxCheck();
                    })
                })
            }
        })
    })(jQuery);

本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1377262,如需转载请自行联系原作者

jQuery扩展实现复选框批操作相关推荐

  1. 获取jQuery中的复选框值

    如何在jQuery中获取复选框的值? #1楼 尝试这个小解决方案: $("#some_id").attr("checked") ? 1 : 0; 要么 $(&q ...

  2. html 判断复选框是否选中,jquery如何判断复选框是否选中?

    jquery如何判断复选框是否选中?下面本篇文章给大家介绍一下jQuery判断复选框(checkbox)是否选中的几种方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. jQuer ...

  3. php ajax勾选框提交,jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例...

    昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...

  4. jquery实现HTML复选框变单选框

    jquery实现HTML复选框变单选框 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 <scri ...

  5. jQuery: 判断checkbox复选框是否被选中

    本文介绍如何用jQuery获取checkbox复选框选中状态,或验证是否选中或取消选中复选框. jQuery: 判断checkbox复选框是否被选中 这里我们使用jQuery .is()方法和匹配的c ...

  6. Jquery对复选框的操作

    <from> 你的爱好是?<br/> <input type="checkbox" name="items" value=&quo ...

  7. 复选框 html 操作,HTML页面中复选框的操作方法

    原标题:HTML页面中复选框的操作方法 复选框在网页中很是常见,无论是电商网站,还是平台,只有有需要选择的地方就会见到复选的身影.接下来,是我之前写过的两个小demo,都是关于复选框的,希望会给大家带 ...

  8. jquery中获取复选框的值

    定义一个cityId数组去接收复选框中的值: var cityId = new Array(); $.each($('input:checkbox:checked'),function(){      ...

  9. php网页才用多个复选框列出,php – jQuery多个复选框页面过滤器

    我一直在试图弄清楚如何正确地做到这一点,似乎无法让它发挥作用. 我想使用jQuery从本质上挑选我想要在页面上显示的内容.我看了,试图找到一些脚本,某种有效,但不是我想要的. 该页面将使用复选框作为& ...

最新文章

  1. oracle收购Mysql后,Mysql的安装配置方法
  2. BI工具和数据中台有什么区别?数据中台初探
  3. maven 安装后变成 mvn 不是内部命令解决方法
  4. (转)C#开发微信门户及应用(5)--用户分组信息管理
  5. seo自动工具_【SEO工具】搭建一个网站需要用到哪些SEO工具?
  6. 中国水泥板市场趋势报告、技术动态创新及市场预测
  7. 采用cookie简单实现文章顶/踩功能
  8. ArcEngine 渲染的使用【转载】
  9. 收藏|史上最全的30个生物实验技术及原理
  10. Maximum Clique最大团问题
  11. 【虹科讲座预告】企业如何防止基于USB的数据外泄
  12. yuv 格式之 Semi Planar和Planar
  13. 笔记本/台式机作为扩展屏
  14. springboot + Vue 整合阿里云视频点播 | Spring Boot 20
  15. udp洪水攻击java_udp洪水攻击 - 上树的熊的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. Python 猜数字小游戏,3次机会
  17. SpringBoot+Vue实现前后端分离的4S店车辆管理系统
  18. comsol学习---声学与振动建模-----1
  19. 架构师修炼系列【微服务】
  20. 那些年你踩过的坑,都在这里了~| 掘金技术征文

热门文章

  1. 网上购物安全防范很重要
  2. [导入]Response.Redirect 打开新窗口的两种方法
  3. 首页新增“游戏开发区”链接
  4. Selenium2+python自动化28-table定位
  5. iOS 切换首页-更改tabbar的容器控制器
  6. 我的LINUX之路----linux目录文件管理
  7. ios8改变statusBar字体的显示颜色
  8. shell脚本中常见的几个判断
  9. 问题解决 xenapp6/6.5发布资源管理器explorer应用不能打开 一闪而过
  10. Golang 项目布局浅析