checkbox 全選、取消全選、反選
在寫一個全選、取消全選、反選的功能時。
未來元素[type='checkbox'],在使用了jquery-1.11.1.min.js版本的jquery時:
功能版本1:
存在的問題,當使用了attr時,出現,這個操作的未來元素只能點擊第一次有效,即是說,當刷新頁面,我點擊選中,可以選中,點擊取消全校可以取消,點擊反選,可以反選,但是如果再次點擊,那麼該功能消失。so,這個版本X掉。
jQuery.extend({
/*select all type eq 1// select none type eq 2// select reverse type eq 3*/
ZellSelectDescript: function (id,type,obj) {
/*the obj is the elements which use=>type is object*/
var defaults = {
"checkElem":"#layer-table-collect .select-collect-file"
}
,options = $.extend(defaults,obj);
$(document).on("click",id,function () {
var $this = $(this),chk=$(options.checkElem);
if(chk.length>0) {
switch(type) {
case 1:/*all*/
chk.attr("checked","checked");
break;
case 2:/*none*/
chk.removeAttr("checked");
break;
case 3:/*inverse*/
chk.each(function (){
var _s = $(this);
_s.attr("checked",!_s.is(":checked"));
})
break;
default:/*all*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = true;
}
}
}else{
return false;
}
})
}
})
造成上面問題的原因是,我使用的jquery-1.11.1.min.js這個版本,goggle&baidu瞭解,修改checkbox的checked屬性,使用prop,用法和attr同;
so,該功能版本2爲:
jQuery.extend({
/*select all type eq 1// select none type eq 2// select reverse type eq 3*/
ZellSelectDescript: function (id,type,obj) {
/*the obj is the elements which use=>type is object*/
var defaults = {
"checkElem":"#layer-table-collect .select-collect-file"
}
,options = $.extend(defaults,obj);
$(document).on("click",id,function () {
var $this = $(this),chk=$(options.checkElem);
if(chk.length>0) {
switch(type) {
case 1:/*all*/
chk.prop("checked","checked");
break;
case 2:/*none*/
chk.removeProp("checked");
break;
case 3:/*inverse*/
chk.each(function (){
var _s = $(this);
_s.prop("checked",!_s.is(":checked"));
})
break;
default:/*all*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = true;
}
}
}else{
return false;
}
})
}
})
經過測試,代碼可以在IE,火狐下正常使用了,但是尼瑪,谷歌下不能使用。看來出現兼容性問題。
還是用原生js吧,試試...
最終兼容代碼,功能版本3:
jQuery.extend({
/*select all type eq 1// select none type eq 2// select reverse type eq 3*/
ZellSelectDescript: function (id,type,obj) {
/*the obj is the elements which use=>type is object*/
var defaults = {
"checkElem":"#layer-table-collect .select-collect-file"
}
,options = $.extend(defaults,obj);
$(document).on("click",id,function () {
var $this = $(this),chk=$(options.checkElem);
if(chk.length>0) {
switch(type) {
case 1:/*all*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = true;
}
break;
case 2:/*none*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = false;
}
break;
case 3:/*inverse*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = !chk[i].checked;
}
break;
default:/*all*/
for(var i=0,len=chk.length;i<len;++i) {
chk[i].checked = true;
}
}
}else{
return false;
}
})
}
})
終於可以使用了,我把這個功能添加到jquery全局函數中。
//調用方法:
$.ZellSelectDescript("#collect-all-btn",1);/*全選*/
$.ZellSelectDescript("#collect-none-btn",2);/*全不選*/
$.ZellSelectDescript("#collect-inverse-btn",3);/*反選*/
因爲jQuery的版本並沒有向下兼容,所以我們在使用Jquery的時候,最好翻翻對應的手冊,還有就是多百度,多google。
checkbox 全選、取消全選、反選的更多相关文章
- Jquery CheckBox复选框 全选/取消全选 最佳实现方式 参考案例
<input id="chkAll" type="checkbox" />全选/取消全选</div> <asp:Repeater ...
- html checkbox 实现全选/取消全选
html checkbox 实现全选/取消全选 <html> <body> <table border="1"> <tr> < ...
- checkbox全选/取消全选
//checkbox全选/取消全选 $(function() { $("#checkAll").click(function() { if(this.checked){ $(&qu ...
- 【转载】checkbox实现全选/取消全选
比较简单.好理解的写法,做个备注.查看请前往原地址:http://blog.csdn.net/graceup/article/details/46650781 <html> <bod ...
- jQuery--checkbox全选/取消全选
用JavaScript使页面上的一组checkbox全选/取消全选,逻辑很简单,实现代码也没有太难的语法.但使用jQuery实现则更简单,代码也很简洁,精辟! jQuery版本:1.3.2 <h ...
- AngularJS--购物车全选/取消全选功能实现
刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...
- jQuery 复选框全选/取消全选/反选
jQuery实现的复选框全选/取消全选/反选及获得选择的值. 完整代码: <!DOCTYPE html> <html> <head> <script type ...
- Vue 全选/取消全选,反选/取消反选
这是一个组件: <template> <div> <div> <input type="checkbox" v-model="i ...
- vue实现功能 单选 取消单选 全选 取消全选
vue实现功能 单选 取消单选 全选 取消全选 代码部分 <template> <div class=""> <h1>全选框</h1> ...
- js jqery判断checkbox是否选中,全选,取消全选,反选,选择奇数偶数项
// 一,判断选中 // js var ischecked2 = function(){ // this.checked == true $(document.getElementsByTagName ...
随机推荐
- 关于Android中RemoveView的错误理解
我以前一直以为,一个View被removeView了之后,就会被回收.其实不是这样的.如果有人引用它. 它还是会存在的.removeView和View被回收没有必然的关系.一个View被removeV ...
- ***linux下用cron定时执行任务的方法
名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab-[-u user]-用标准输入 ...
- sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)
Pixel density Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pi ...
- poj 2594 传递闭包+最大路径覆盖
由于路径可以有重复的点,所以需要将间接相连的点连接 #include<stdio.h> #include<string.h> #include<algorithm> ...
- MATLAB学习笔记(二)——主要是MATLAB的矩阵知识
PS:主要是讲解矩阵的相应的实现方法,其实MATLAB的很大一部分的优势,就是集成了矩阵级别的运算,并以此为特点,可以进行多维空间上的验证. 让我们懂得了原来线性代数如此有用= - =. (一)MAT ...
- SqlServer2000数据库字典--表结构.sql
SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, C ...
- Hark的数据结构与算法练习之梳排序
算法说明梳排序是交换排序的一种,它其实也是改自冒泡排序,不同之处是冒泡排序的比较步长恒定为1,而梳排序的比较步长是变化的. 步长需要循环以数组长度除以1.3,到最后大于等于1即可. 光说可能比较抽象, ...
- Selenium介绍
基于selenium的自动化测试,华为已经做了两代了,目前是做到SmartGUI2.0,基于他们自己的AutoSpace平台.不过目前支持的貌似只有IE和火狐(火狐3.6).控件录制支持ID,Name ...
- 简单几何(数学公式+凸包) UVA 11168 Airport
题目传送门 题意:找一条直线,使得其余的点都在直线的同一侧,而且使得到直线的平均距离最短. 分析:训练指南P274,先求凸包,如果每条边都算一边的话,是O (n ^ 2),然而根据公式知直线一般式为A ...
- 状压DP POJ 2411 Mondriaan'sDream
题目传送门 /* 题意:一个h*w的矩阵(1<=h,w<=11),只能放1*2的模块,问完全覆盖的不同放发有多少种? 状态压缩DP第一道:dp[i][j] 代表第i行的j状态下的种数(状态 ...