2012-07-11 65 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');