jQuery iCheck 插件提供高度可定制的復選框和單選按鈕(jQuery和Zepto)。最新版本1.0.2,有個最新的2.0預覽版,但是發布之后沒有再更新。
特點:在不同的瀏覽器和設備(桌面和移動)一致的輸入體驗,觸摸設備支持(iOS、Android、Windows Phone、黑莓、亞馬遜的Kindle),鍵盤可輸入(制表符,空格鍵,向上或向下鍵和其他快捷鍵),屏幕閱讀器可以輸入(畫外音和其他屬性,定制的詠嘆調)自由(使用任何HTML和CSS樣式輸入或嘗試6視網膜准備皮),體積輕巧(1 KB的壓縮包)。
提供32個選項自定義復選框和單選按鈕,11回調處理變化,以編程方式更改的9種方法。保存對原始輸入的更改,和各種選擇器一起緊密的工作。
官方地址:http://plugins.jquery.com/icheck/
演示地址:http://icheck.fronteed.com/
開源地址:https://github.com/fronteed/iCheck
中文文檔:http://www.bootcss.com/p/icheck/
一、全選
在使用jQuery iCheck 插件的時候遇到了一個問題,就是當我們使用普通的js全選功能無效了。
$("#checkall").click( function(){ if(this.checked){ $("input[name='checkname']").each(function(){this.checked=true;}); }else{ $("input[name='checkname']").each(function(){this.checked=false;}); } } );
這樣來寫對默認的checkbox框沒問題,但是當使用iCheck 插件后將無效。
那么該怎么解決呢?
最后是在stackoverflow 找到的解決方法:
地址是這里: http://stackoverflow.com/questions/17820080/function-select-all-and-icheck
//全選獲取數值 var checkAll = $('input.all'); var checkboxes = $('input.check'); checkAll.on('ifChecked ifUnchecked', function(event) { if (event.type == 'ifChecked') { checkboxes.iCheck('check'); } else { checkboxes.iCheck('uncheck'); } }); checkboxes.on('ifChanged', function(event){ if(checkboxes.filter(':checked').length == checkboxes.length) { checkAll.prop('checked', 'checked'); } else { checkAll.removeProp('checked'); } checkAll.iCheck('update'); });
二、獲取選中值
在解決了全選問題后,又遇到了一個新的問題,獲取選中的checkbox的value的時候,使用:$(this).attr('checked');獲取不到值了~,蛋疼。
最后幾經Google搜索,還是在stackoverflow 找到了啟發,判斷checkbox的布爾值,使用 :$(this).is(':checked');
最后代碼的解決方法如下:
$(".ajax-delete").click(function(){ var url = $(this).attr('data-url'); var str=""; var ids=""; $("input[name='id']:checkbox").each(function(){ if(true == $(this).is(':checked')){ str+=$(this).val()+","; } }); if(str.substr(str.length-1)== ','){ ids = str.substr(0,str.length-1); } console.log(ids); });
延伸:
1.判斷已選中的個數/長度
var len = $("input[name='id']:checkbox").length;
三、radio
問題: 同時可選中多個值
解決: 設置同一范圍內的選項的name一致,原因是由於個別選項單獨處理而沒有設置name
四、個人使用的封裝代碼
/* iCheck */ //初始化 function iCheckInit() { $('.i-checks').iCheck({ checkboxClass: 'icheckbox_square-green', radioClass: 'iradio_square-green', }); } //選中數量 function selectedCount(name) { return $("input[name='" + name + "']:checked").length; } //全選 function selectAll(name) { $('input[name="' + name + '"]').iCheck('check'); } //全不選 function selectNone(name) { $('input[name="' + name + '"]').iCheck('uncheck'); }
來自:http://www.tuicool.com/articles/aANRBv
官網:http://www.bootcss.com/p/icheck/