全选看起来挺简单的,要做得完美就不那么容易了。

目前,我的全选插件能做到以下6点:

1.点击全选checkbox,能将要选择的checkbox都选中。去掉全选按钮,能将所有的checkbox都不选。这是最基本的功能,凡网上所有的有关全选的脚本都能满足这个要求。

2.点击选择的checkbox们,能根据是不是已经全部选择了,自动勾选或者取消勾选“全选checkbox”。

3.如果另外还有"全选按钮",点击的时候也要能全选。

4.如果还有“全不选按钮”,点击的时候要能全不选。

5.全选与不选的状态切换中,要能自定义事件,与全选与不选的状态相呼应。

6.若存在checkbox组,组1、组2要控制组内的全选问题,还要另外有全选按钮能控制对组1、组2的全选。然后可以无限向下嵌套。

 (function ($) {
$.fn.nCheckAll = function (settings) {
var defaultSetting = { filter: null, checkButton: false, notCheckButton: false, toggleFun: false };
var self = $(this);
$.extend(defaultSetting, settings);
var selectStr = defaultSetting.filter;
var flagToggle = true; self.each(function () {
this.checkAll = function (checked) {
checkAll(checked);
}
}); $(defaultSetting.filter).each(function () {
this.check = function () {
setAllCheckBoxState($(this).attr("checked") && isAllChecked(selectStr));
}
}); function checkSub(checked) {
$(defaultSetting.filter).each(function () {
if (this.checkAll) this.checkAll(checked);
});
} function checkSup(checked) {
self.each(function () {
if (this.check) this.check();
});
} function isAllChecked(selectStr) {
var res = true;
$(selectStr).each(function () {
if (!$(this).attr("checked")) {
res = false;
return false;
}
});
return res;
} function doToggle(flag) {
if (defaultSetting.toggleFun) { defaultSetting.toggleFun(flag); flagToggle = !flag; }
} function setAllCheckBoxState(checked) {
doToggle(checked);
setChecked(self, checked);
checkSup(checked);
} function setChecked(item, checked) {
if (checked) item.attr("checked", true);
else item.removeAttr("checked");
} function setEventForchkAll(selectStr) {
self.bind("click", function () {
this.checkAll($(this).attr("checked"));
}); $(selectStr).bind("click", function () {
this.check();
}); setAllCheckBoxState(isAllChecked(selectStr));
} function checkAll(checked) {
setChecked($(selectStr), checked);
setAllCheckBoxState(checked);
checkSub(checked);
} setEventForchkAll(selectStr); if (defaultSetting.checkButton) $(defaultSetting.checkButton).bind("click", function () {
checkAll(flagToggle);
}); if (defaultSetting.notCheckButton) $(defaultSetting.notCheckButton).bind("click", function () {
checkAll(false);
});
}
})(jQuery);

源代码

使用举例:

function toogleBtn(checked) {
if (checked) $("#btnCheckAll").val("全不选(A)");
else $("#btnCheckAll").val("全选(A)");
}
$(function () {
$(".chkAll input[type='checkbox']").nCheckAll({ filter: ".chkSelected input[type='checkbox']"
, checkButton: "#btnCheckAll"
, toggleFun: toogleBtn
});
});

jquery的全选插件的更多相关文章

  1. jQuery实现全选效果【转】

    这是一段用jquery实现全选的代码,主要思路如下: 1.所有的复选框都有单击事件,所有效果都是在单击事件下实现的 2.全选复选框所实现的功能与其他复选选项实现的功能不同,所有在单击事件内做一个判断, ...

  2. jQuery实现全选、全不选、反选

    如图,需要使用jQuery实现全选.全不选.反选功能: 核心代码: 全选 $("#check_all").click(function(){ $("input:check ...

  3. python: jquery实现全选 反选 取消

    引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...

  4. jquery实现全选、反选、不选

    <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8&quo ...

  5. jquery的全选/全不选/反选以及attr添加checked属性失败的解决办法

    如下图: <head> <title></title> <style type="text/css"> div { border: ...

  6. jquery checkbox全选,全不选,反选方法,jquery checkbox全选只能操作一次

    jquery checkbox全选,全不选,反选方法, jquery checkbox全选只能操作一次, jquery checkbox全选只有第一次成功 >>>>>&g ...

  7. jQuery实现全选与全不选功能

    初始时: 实现功能后: 实现该功能的核心代码: <script> $(function(){ $("#selectBtn").click(function(){ con ...

  8. (转载)jquery实现全选、反选、获得所有选中的checkbox

    举了7个不同的checkbox状态,和大家一一分享. 1.全选 $("#btn1").click(function(){ $("input[name='checkbox' ...

  9. jquery checkbox 选中 全选 插件

    checkbox  选中 全选 在项目中经常用到,但是不同的程序员写出的东西各有差异,在此整合了jquery checkbox插件,用起来很方便,也总结了我们项目中通常会出现问题的地方,一行代码搞定. ...

随机推荐

  1. MINIX3

    这个系列minix3是好早看的源码  现在都忘记的差不多了 觉得就此扔掉可惜了  今天把他全部放在博客上 1 是想和大家一起讨论下 2 是没事看看 能够加强对一个稳定性系统的理解 加厚

  2. T卡热插拔

    1.配置: GPIO 管脚 GPIO方向 Debounce polarity Sensitive_level Host1 CDpin (EINT16) 16 INPUT PULL UP Enable ...

  3. supervisord 小记

    此篇仅用作supervisord的用法,不涉及理论说明和基础介绍 supervisor(一)基础篇 使用supervisord来管理process 进程的守护神 - Supervisor superv ...

  4. HTML5地理定位

    1.通过navigator.geolocation来获取设备当前位置,返回一个位置对象,可以获得当前经纬度相关信息: 2.navgatior.geolocation的三个方法: getCurrentP ...

  5. Android应用开发是否应避免使用枚举?

    在Android Froyo版本之前, 官方文档Performance Tips中有"Avoid Enums Where You Only Need Ints", 后来该部分被去掉 ...

  6. http 学习 1-2 chapter2-URL与资源

    URL是因特网资源的标准化名称.URL指向每一条电子信息,告诉他们位于何处,以及如何与之进行交互. URL语法,以及各种URL组件的含义及其所做的工作. 很多Web客户端都支持额URL快捷方式,包括相 ...

  7. Hibernate 随记(数据库映射流程)

      ORM:Object/Relationship Mapping  对象/关系映射   实现流程:   1.项目中导入Hibernate相关类包并创建配置文件.Hibernate.cfg.xml(可 ...

  8. Tomcat的ISO-8859-1

    Tomcat的默认编码时ISO8859-1,有些老工程,遗留项目很可能没改这块,这样写代码时如果传输中文,服务器收到的就可能是乱码. 昨天就被郁闷了1小时,左右都不通. 后来发现Android里的字符 ...

  9. AppStore遭遇大BUG

    用AppLoader上传,提示这个 The u option must have a non-empty value.The password must have a non-empty value. ...

  10. Linux删除apt-get安装的软件

    我们都知道安装软件最简单的方法是apt-get install,但是卸载就不常用了,如何卸载呢?1.sudo apt-get remove xxxxxsudo apt-get autoremove2. ...