首頁  >  文章  >  web前端  >  jquery中checkbox使用方法簡單實例示範_jquery

jquery中checkbox使用方法簡單實例示範_jquery

WBOY
WBOY原創
2016-05-16 15:30:121184瀏覽

和大家分享一段基於jQuery實作checkbox清單全選、反選和不選功能的程式碼,適用於網頁多選後需要進行批次操作的場景(如大量刪除等)。文章結合實例,程式碼簡潔,基本覆蓋選項選擇操作的各個方面,希望可以幫到有需要的前端開發愛好者。

引入jquery庫

建構HTML

一般從資料庫讀出來的清單都需要批次選取以便刪除與編輯等,下面我們就來模擬下,實作複選框checkbox的全選與不選,先建立html

<ul id="list"> 
 <li><label><input type="checkbox" value="1"> 1.我是记录来的呢</label></li> 
 <li><label><input type="checkbox" value="2"> 2.哈哈,真的太天真了</label></li> 
 <li><label><input type="checkbox" value="3"> 3.爱上你是我的错吗?</label></li> 
 <li><label><input type="checkbox" value="4"> 4.从开始你就不应用爱上我</label></li> 
 <li><label><input type="checkbox" value="5"> 5.喜欢一个人好难</label></li> 
 <li><label><input type="checkbox" value="6"> 6.你在那里呢</label></li> 
</ul> 
<input type="checkbox" id="all"> 
<input type="button" value="全选" class="btn" id="selectAll"> 
<input type="button" value="全不选" class="btn" id="unSelect"> 
<input type="button" value="反选" class="btn" id="reverse"> 
<input type="button" value="获得选中的所有值" class="btn" id="getValue">

jQuery 程式碼

1、全選或全不選。 當勾選全選按鈕#selectAll旁的複選框#all時,清單中的選項全部選中,反之取消勾選則清單中的選項全部為未選取狀態。

$("#all").click(function(){ 
 if(this.checked){ 
  $("#list :checkbox").attr("checked", true); 
 }else{ 
  $("#list :checkbox").attr("checked", false); 
 } 
});

2、全選。 當點擊全選按鈕#selectAll或勾選全選按鈕旁的複選框#all時,清單中所有的選項都會被選中,包括全選旁邊的複選框也是選中狀態。

$("#selectAll").click(function () { 
 $("#list :checkbox,#all").attr("checked", true); 
});

3、全不選。 當點選全不選按鈕#unSelect時,清單中所有的選項都是未選取狀態,當然包含#all也是未選取狀態。

$("#unSelect").click(function () { 
 $("#list :checkbox,#all").attr("checked", false); 
});

4、反選。 當點選反選按鈕#reverse,清單中所有被選取的選項變為未選取狀態,而所有未選取的選項變為已選取狀態,當然也要注意#all的狀態。

$("#reverse").click(function () { 
 $("#list :checkbox").each(function () { 
  $(this).attr("checked", !$(this).attr("checked")); 
 }); 
 allchk(); 
});

程式碼中遍歷了選項列表,然後改變checked屬性,最後呼叫函數allchk(),後面將介紹該函數。

5、取得所有選取的數值。 我們要跟後台程式互動就必須取得清單中所選項的值,我們透過遍歷數組,將選取項目的值存放在陣列中,最後組成由逗號(,)隔開的字串,開發者就可以透過取得這個字串進行對應的操作了。

$("#getValue").click(function(){ 
 var valArr = new Array; 
 $("#list :checkbox[checked]").each(function(i){ 
  valArr[i] = $(this).val(); 
 }); 
 var vals = valArr.join(',');//转换为逗号隔开的字符串 
 alert(vals); 
});

為了完善選取選項功能,我們在按一下清單中某個選項時,如果勾選的項目剛好滿足全部​​選取的條件,則#all也要對應的變為選取狀態,同樣,如果事先所有的選項是選取狀態時,當取消勾選某個選項時,那麼#all也要對應的變成未選取狀態。

//设置全选复选框 
$("#list :checkbox").click(function(){ 
 allchk(); 
});

函數allchk()就是用來偵測全選框#all應該是選取狀態還是未選取狀態的,請看程式碼。

function allchk(){ 
 var chknum = $("#list :checkbox").size();//选项总个数 
 var chk = 0; 
 $("#list :checkbox").each(function () { 
  if($(this).attr("checked")==true){ 
   chk++; 
  } 
 }); 
 if(chknum==chk){//全选 
  $("#all").attr("checked",true); 
 }else{//不全选 
  $("#all").attr("checked",false); 
 } 
}

總結

jQuery操作複選框的選中和不選中狀態非常簡單,使用attr()來設定"checked"屬性的值,true未選中,false為未選中,在整個全選、反選過程中註意處理全選取複選框的選取狀態,以及取得選取選項的值。以下我將所有jQuery程式碼整理在一起,供大家參考。

$(function () { 
 //全选或全不选 
 $("#all").click(function(){ 
  if(this.checked){ 
   $("#list :checkbox").attr("checked", true); 
  }else{ 
   $("#list :checkbox").attr("checked", false); 
  } 
  }); 
 //全选 
 $("#selectAll").click(function () { 
   $("#list :checkbox,#all").attr("checked", true); 
 }); 
 //全不选 
 $("#unSelect").click(function () { 
   $("#list :checkbox,#all").attr("checked", false); 
 }); 
 //反选 
 $("#reverse").click(function () { 
   $("#list :checkbox").each(function () { 
    $(this).attr("checked", !$(this).attr("checked")); 
   }); 
   allchk(); 
 }); 
  
 //设置全选复选框 
 $("#list :checkbox").click(function(){ 
  allchk(); 
 }); 
 
 //获取选中选项的值 
 $("#getValue").click(function(){ 
  var valArr = new Array; 
  $("#list :checkbox[checked]").each(function(i){ 
   valArr[i] = $(this).val(); 
  }); 
  var vals = valArr.join(','); 
   alert(vals); 
 }); 
}); 
function allchk(){ 
 var chknum = $("#list :checkbox").size();//选项总个数 
 var chk = 0; 
 $("#list :checkbox").each(function () { 
  if($(this).attr("checked")==true){ 
   chk++; 
  } 
 }); 
 if(chknum==chk){//全选 
  $("#all").attr("checked",true); 
 }else{//不全选 
  $("#all").attr("checked",false); 
 } 
}

透過本文希望大家對jquery中checkbox的使用方法有個大概的認識,再透過大量實例熟練地掌握checkbox使用方法。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn