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 ...
随机推荐
- html select 下拉箭头隐藏
html select 下拉箭头隐藏 <!DOCTYPE html> <html> <head lang="en"> <meta char ...
- Sql server之路 (四)添加本地数据库MDF文件
安装环境 VS2008 Vs2008 Sp1 安装系统 Win8 1.创建窗体 右键添加新项 上一步 上一步 点击确定 双击Database1.mdf文件 在列名出填写字段名 保存 Ctrl+S 点 ...
- WordPress主题制作函数
WordPress基本模板文件 一套完整的WordPress模板应至少具有如下文件: style.css: CSS(样式表)文件 index.php: 主页模板 archive.php: Archiv ...
- SURF算法与源码分析、下
上一篇文章 SURF算法与源码分析.上 中主要分析的是SURF特征点定位的算法原理与相关OpenCV中的源码分析,这篇文章接着上篇文章对已经定位到的SURF特征点进行特征描述.这一步至关重要,这是SU ...
- HDU 4258 Covered Walkway 斜率优化DP
Covered Walkway Problem Description Your university wants to build a new walkway, and they want at ...
- Android loading进度条使用简单总结
在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先 ...
- Xamarin Android长度单位区别
Xamarin Android长度单位区别 Android中长度单位有6种:px.in.mm.pt.dp/dip.sp.其中,px表示显示设备的一个像素:in表示显示设备的1英寸:mm表示显示设备的1 ...
- 【转载】Linux下makefile详解--跟我一起写 Makefile
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...
- IOS 获取最新设备型号方法
1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...
- Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容
规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档.本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发.本文档如有不对或者不 ...