2014-10-09 171 views
0

我試圖在使用JQuery 1.9.1的HTML表單上實現「全選」複選框。據我所知,它應該就像使用.prop來檢查或取消選中複選框一樣簡單,但沒有任何我嘗試似乎工作。jQuery檢查複選框不起作用

請參閱下面的內容,我已經嘗試過了,我已經註釋了一些失敗的嘗試,並且我甚至無法爲一個複選框工作。什麼是正確的方法來做到這一點?我錯過了什麼,可能在HTML?

HTML

<input type="checkbox" id="cb_select_all" name="cb_select_all" value="t" /> 
<label for="cb_select_all"><b>Select All</b> 
</label> 
<br /> 
<input type="checkbox" name="cb1" id="cb1" class="cb_all" value="t" /> 
<label for="cb1">1 test</label> 
<br /> 
<input type="checkbox" name="cb2" id="cb2" class="cb_all" value="t" /> 
<label for="cb2">2 test</label> 

的Javascript

$(document).ready(function() { 
    $("#cb_select_all").change(cb_select_all_onchange); 
}); //end $(document).ready 

function cb_select_all_onchange() { 
    if ($("#cb_select_all").checked) { 
     //$("#cb1").prop("checked", true); 
     //$(".cb_all").each(function(){ this.checked = true; }); 
     //document.getElementById("cb1").checked = true; 
     $(".cb_all").prop("checked", true); 
    } else { 
     $("#cb1").prop("checked", false); 
    } 
} 

http://jsfiddle.net/mLnb5qed/5/

感謝, JDT

回答

2

更改if這個

if ($("#cb_select_all")[0].checked) { } 

(或)if ($("#cb_select_all").is(":checked")) { } 問題是第一個是native元素而不是jQuery對象的屬性。通過索引訪問它可以讓您使用該屬性。第二種方式是jQuery方式。

+0

您使用的ID選擇,'[0]'不需要,除非有非法的HTML繼續。另外,'.checked'是一個DOM屬性,而不是一個jQuery屬性。 – 2014-10-09 14:52:49

+0

@SterlingArcher好吧,我認爲你必須認識事物。我也說'.checked'是一個DOM屬性。 – 2014-10-09 14:56:35

+0

哎呀,我完全錯過了!你是對的,我的壞! – 2014-10-09 14:58:42

0

使用

$("#cb_select_all").is(':checked'); 
+0

你可以擴展爲什麼這個代碼解決了原始海報的問題嗎?一般只有代碼解答纔會被解釋。 – jakerella 2014-10-09 15:19:07

+0

我覺得很明顯,不需要解釋如何在代碼中使用它...... – Balder 2014-10-10 07:27:56

+0

這不是重點,這些類型的答案被標記,這就是爲什麼它收到評論。請儘可能詳細說明您的答案。 – jakerella 2014-10-10 12:16:10

0

這爲我工作:

$(document).ready(function() { 
     $("#cb_select_all").change(function() { 
      if ($("#cb_select_all").prop("checked") == true) { 
       $('.cb_all').prop('checked', true); 
      } 
      else { 
       $('.cb_all').prop('checked', false); 
      } 
     }); 
    }); 

會發生什麼:

Check if the "cb_select_all" checkbox changes state 
if the "checked" state is set to true 
    check all "cb_all" checkboxes 
else 
    uncheck all "cb_all" checkboxes