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

未來元素[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. hdu 1755 数学 ***

    链接:点我 题解可以看这里:点我和这里 #include<cstdio> #include<cstring> #include<algorithm> #define ...

  2. 学会使用Chromium中的LOG

    转自:http://blog.csdn.net/kuerjinjin/article/details/43937345 简介 众所周知chromium项目无比巨大,想去快速的了解,调试并添加自己想要的 ...

  3. Ubuntu小点汇总,更新中...

    转自:http://blog.csdn.net/zxz_tsgx/article/details/39713627 昨天重装了Ubuntu14.04 64位版,又被一些基础操作/设置给搞怕了,以前安装 ...

  4. C调Lua

    转自:http://foredoomed.org/blog/2013/12/07/integrate-c-with-lua/ 我们在用C写程序的时候,很多情况下需要用到List,Map等集合,但是C是 ...

  5. loj 1407(2-sat + 枚举 + 输出一组可行解 )

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27115 思路:有一个trick要注意:当情况为 2 x y 时,可 ...

  6. Failed to load or instantiate

    Failed to load or instantiate: add this code in your xml: xmlns:android="http://schemas.android ...

  7. aggregateByKey

    def seq(a:Int, b:Int) : Int ={ math.max(a,b) } def comb(a:Int, b:Int) : Int ={ a + b } val data = sc ...

  8. Ada语言基础

    前天是程序员节,CodeForces上举办了一场比赛,要求必须使用ADA语言提交.顿时虐爆了我这个只知道pascal,C,BASIC这3种语系的菜.今天闲着看了看这种语言,一看才知道竟然是美国军方专用 ...

  9. ios cocos2d TexturePacker生成文件后的使用方法

    (1)将*.pvr.ccz文件转换为CCSpriteBatchNode (2)   将对应的plist文件读到CCSpriteFrameCache中 (3) 从CCSpriteFrameCache获取 ...

  10. TYVJ P1069 cowtour 看不懂题意

    描述 农民John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,农民John就有多个牧场了. Joh ...