博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery扩展实现复选框批操作
阅读量:6936 次
发布时间:2019-06-27

本文共 2687 字,大约阅读时间需要 8 分钟。

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

1.问题引入:

上图一看就明白了需求。

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

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

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

  2.实现思路

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

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

3. 具体实现和使用

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

HTML页面代码:

    测试 jQuery extend 方法 和checkbox全选和全取消        
全选

  说明:

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

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

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

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

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

    /** * 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);

转载地址:http://lygjl.baihongyu.com/

你可能感兴趣的文章
.NET 调用c++库注意事项
查看>>
重磅发布: 阿里云WAF日志实时分析上线 (含视频)
查看>>
深度|10分钟读懂阿里巴巴高级专家在Flutter Live2018的分享
查看>>
大规模深度学习预测场景下 codegen 的思考与应用
查看>>
spring框架使用Quartz执行定时任务实例详解
查看>>
全链路跟踪系统设计与实践(转载)
查看>>
支付接口教程,详解支付宝接口(二)
查看>>
SourceTree 教程文档(了解界面)
查看>>
wpf 依赖属性和附加属性
查看>>
rocketMq-producer介绍
查看>>
谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
查看>>
Django搭建个人博客(二)
查看>>
SSM+maven实现答题管理系统(二)
查看>>
玩转报表排名
查看>>
SQL Server 默认跟踪(Default Trace)
查看>>
[剑指offer] 字符流中第一个不重复的字符
查看>>
平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
查看>>
Source Insight 3.X 标签插件v1.0发布
查看>>
百度AI生态方法论升级,AI开放平台深入7大细分领域
查看>>
Linux下配置Golang开发环境
查看>>