在寫一個全選、取消全選、反選的功能時。

未來元素[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 全選、取消全選、反選的更多相关文章

  1. Jquery CheckBox复选框 全选/取消全选 最佳实现方式 参考案例

    <input id="chkAll" type="checkbox" />全选/取消全选</div> <asp:Repeater ...

  2. html checkbox 实现全选/取消全选

    html checkbox  实现全选/取消全选 <html> <body> <table border="1"> <tr> < ...

  3. checkbox全选/取消全选

    //checkbox全选/取消全选 $(function() { $("#checkAll").click(function() { if(this.checked){ $(&qu ...

  4. 【转载】checkbox实现全选/取消全选

    比较简单.好理解的写法,做个备注.查看请前往原地址:http://blog.csdn.net/graceup/article/details/46650781 <html> <bod ...

  5. jQuery--checkbox全选/取消全选

    用JavaScript使页面上的一组checkbox全选/取消全选,逻辑很简单,实现代码也没有太难的语法.但使用jQuery实现则更简单,代码也很简洁,精辟! jQuery版本:1.3.2 <h ...

  6. AngularJS--购物车全选/取消全选功能实现

    刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...

  7. jQuery 复选框全选/取消全选/反选

    jQuery实现的复选框全选/取消全选/反选及获得选择的值. 完整代码: <!DOCTYPE html> <html> <head> <script type ...

  8. Vue 全选/取消全选,反选/取消反选

    这是一个组件: <template> <div> <div> <input type="checkbox" v-model="i ...

  9. vue实现功能 单选 取消单选 全选 取消全选

    vue实现功能 单选 取消单选 全选 取消全选 代码部分 <template> <div class=""> <h1>全选框</h1> ...

  10. js jqery判断checkbox是否选中,全选,取消全选,反选,选择奇数偶数项

    // 一,判断选中 // js var ischecked2 = function(){ // this.checked == true $(document.getElementsByTagName ...

随机推荐

  1. 计数排序算法——时间复杂度O(n+k)

    计数排序 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出.它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于 ...

  2. linux shutdown关闭系统命令使用介绍(转)

    shutdown命令是最常用的关闭系统命令,不仅可以用于立即关闭系统,还可以在指定时间关闭系统   linux关闭系统命令之shutdown 关闭.重启系统 Linux是一个多用户.多任务系统,如果不 ...

  3. 【codevs2216】行星序列 线段树 区间两异同修改+区间求和*****

    [codevs2216]行星序列 2014年2月22日3501 题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始,他就报名参加了“小小 ...

  4. eclipse下导入工程的小问题

  5. TabLayout

    效果图: 标题和fragment联动效果已经封装好了,非常方便 <android.support.design.widget.TabLayout android:id="@+id/ta ...

  6. js:数据结构笔记1---数组

    JS中数组: 只是一种特殊的对象,比其他语言中效率低: 属性是用来表示偏移量的索引:在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串 ...

  7. BZOJ3679 : 数字之积

    设f[i][p2][p3][p5][p7][j][k]表示前i位,2,3,5,7的次数,前i位是否等于x,是否有数字的方案数 然后数位DP即可,ans=cal(r)-cal(l) #include&l ...

  8. POJ 3686 & 拆点&KM

    题意: 有n个订单,m个工厂,第i个订单在第j个工厂生产的时间为t[i][j],一个工厂可以生产多个订单,但一次只能生产一个订单,也就是说如果先生产a订单,那么b订单要等到a生产完以后再生产,问n个订 ...

  9. java中特殊的String类型

    Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String("abc"); 第 ...

  10. 【BZOJ】1192: [HNOI2006]鬼谷子的钱袋(水题)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1192 看到题我就好像想起以前小学升学考数学的最后一题,将一条金块分割最少的部分,使得每一天都能够支付 ...