2012-07-11 70 views
1

有沒有更好的方式來做到這一點:如何知道複選框是否被選中,jquery?

var IsC = $('input[type=checkbox]').attr("checked") == "checked" ? true : false; 

+0

你必須更精確地測試你想測試的內容。你想知道哪裏有複選框被選中或者是否檢查了特定的複選框?你的代碼只會測試第一個是否被選中(只要你沒有超過一個就可以)。但除此之外,我很確定這是在這裏之前... – 2012-07-11 11:02:34

+1

可能重複的[jquery - 檢查複選框被選中](http://stackoverflow.com/questions/2204250/jquery-check-if- checkbox-is-checked) – rlemon 2012-07-11 11:03:52

+0

任何1k代表或更高的人都應該羞於回答這個......可能是最常問的問題之一..你只是代表農業 – rlemon 2012-07-11 11:04:49

回答

4

可以使用:checked selector

var IsC = $('input[type=checkbox]').is(":checked"); 

或者:

var IsC = $('input[type=checkbox]:checked').length>0; 
+0

'.is()'如果至少也返回'true'一個被檢查。 http://api.jquery.com/is/ – nbrooks 2012-07-11 11:09:10

2
$("input[type=checkbox]").is(":checked") 
0

的一種方法是使用的解決方案張貼dystroy

另一種方法是用prop方法代替attr。檢查的例子在http://api.jquery.com/prop/

elem.checked 
// true (Boolean) Will change with checkbox state 

$(elem).prop("checked") 
// true (Boolean) Will change with checkbox state 

elem.getAttribute("checked") 
// "checked" (String) Initial state of the checkbox; does not change 

$(elem).attr("checked") //(1.6) 
// "checked" (String) Initial state of the checkbox; does not change 

$(elem).attr("checked") //(1.6.1+) 
// "checked" (String) Will change with checkbox state 

$(elem).attr("checked") //(pre-1.6) 
// true (Boolean) Changed with checkbox state 
1
var IsC = $('input[type=checkbox]').attr("checked") == "checked" ? true : false; 

相同,只是說:

var IsC = $('input[type=checkbox]').attr("checked") == "checked"; 

因爲==將返回truefalse。 (純粹是一個JavaScript的變化)


jQuery的優化(以字符數方面,至少)是:

var IsC = $('input:checkbox').is(':checked'); 
//returns true if at least one checkbox in the document is checked 

,你可以告訴選擇添加範圍的比較而應該找到輸入:

var IsC = $('#myForm input:checkbox').is(':checked');