jquery的全选插件
全选看起来挺简单的,要做得完美就不那么容易了。
目前,我的全选插件能做到以下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的全选插件的更多相关文章
- jQuery实现全选效果【转】
这是一段用jquery实现全选的代码,主要思路如下: 1.所有的复选框都有单击事件,所有效果都是在单击事件下实现的 2.全选复选框所实现的功能与其他复选选项实现的功能不同,所有在单击事件内做一个判断, ...
- jQuery实现全选、全不选、反选
如图,需要使用jQuery实现全选.全不选.反选功能: 核心代码: 全选 $("#check_all").click(function(){ $("input:check ...
- python: jquery实现全选 反选 取消
引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...
- jquery实现全选、反选、不选
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8&quo ...
- jquery的全选/全不选/反选以及attr添加checked属性失败的解决办法
如下图: <head> <title></title> <style type="text/css"> div { border: ...
- jquery checkbox全选,全不选,反选方法,jquery checkbox全选只能操作一次
jquery checkbox全选,全不选,反选方法, jquery checkbox全选只能操作一次, jquery checkbox全选只有第一次成功 >>>>>&g ...
- jQuery实现全选与全不选功能
初始时: 实现功能后: 实现该功能的核心代码: <script> $(function(){ $("#selectBtn").click(function(){ con ...
- (转载)jquery实现全选、反选、获得所有选中的checkbox
举了7个不同的checkbox状态,和大家一一分享. 1.全选 $("#btn1").click(function(){ $("input[name='checkbox' ...
- jquery checkbox 选中 全选 插件
checkbox 选中 全选 在项目中经常用到,但是不同的程序员写出的东西各有差异,在此整合了jquery checkbox插件,用起来很方便,也总结了我们项目中通常会出现问题的地方,一行代码搞定. ...
随机推荐
- Day21_IO第三天
1.IO体系总图 2.字符流体系图 记忆路线:输入输出流前面加File和Buffered,这就记住6个了,还剩两个转换流名字比较特殊,需要着重记一下(转换流:字节和字符的组合,所以起名字叫InputS ...
- OpenStack虚拟机DHCP获取不到IP地址排查
版本:OpenStack Liberty Neutron DVR 现象: 1.在虚拟机内部不停地dhclient 2.在虚拟机所属的计算节点的物理网卡上抓包,发现该虚拟机发出的dhcp广播包 3.在虚 ...
- Eclipse/IDEA使用小技巧
使用IDEA,先将keymap改为eclipse形式 1.搜索技巧: f4:列举所有类树状结构 Ctrl+F:搜索特定词 Ctrl+T:列举所有子类 Ctrl+O:快速检索想要的方法 Ctrl+Shi ...
- "错误消息 401.2。: 未经授权: 服务器配置导致登录失败。"的解决办法
[详细报错如下]: “/”应用程序中的服务器错误. 访问被拒绝. 说明: 访问服务此请求所需的资源时出错.服务器可能未配置为访问所请求的 URL. 错误消息 401.2.: 未经授权: 服务器配置导致 ...
- Tomcat口令猜解工具【Python脚本】
Tomcat 服务器网页部署,登录需用户名/密码,编写了一个简单的Python脚本来测试一些简单的弱口令. 测试环境:Tomcat版本 7.0 登录界面采用basic认证,Base 64加密一下,模拟 ...
- php日历
一.计算数据 1.new一个Calendar类 2.初始化两个下拉框中的数据,年份与月份 3.初始化要搜索的年份和月份 4.计算得出日历中每一天的数据信息,包括css.天数 <?php requ ...
- CE取系统时间值
取时间值: void GetTime() { //取时间值 SYSTEMTIME st = {}; // 时间结构体 GetLocalTime(&st); // 把获取的系统时间信息存储到SY ...
- js 测试
今天js测试题目: 被基础题目虐暴......惨不忍睹 1. var num = 2; switch(num){ case 1: console.log("1"); case 2: ...
- liunx之:解决liunx下dns配置重启失效的问题
有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynami ...
- Oracle Hints详解
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用.基于代价的优化器是很聪明的,在绝大多数情况下它会选择 ...