复选框已选中属性未切换

时间:2014-10-30 18:48:45

标签: jquery html checkbox checked

在尝试添加由复选框启动的jQuery功能时,我遇到了一个奇怪的问题。我的复选框似乎是切换已检查的属性,因为在视觉上,复选标记会在单击时切换,但“已检查”属性实际上永远不会更改。

以下是我的问题示例:http://jsfiddle.net/ez710gxL/3/

<input id="check_box_2" class="css-checkbox padding-left-3" type="checkbox" checked="checked" />
<label for="check_box_2" name="cb_lbl_2" class="css-label" style="margin-top:5px; margin-left:10px;">Show Note</label>

我的问题是: 如果checked属性没有改变,我如何使用jQuery来确定是否选中了复选框?

2 个答案:

答案 0 :(得分:2)

使用jQuery .prop()代替.attr()

设置.prop("checked", true)。这是.prop()优于.attr()的最大好处之一,因为.prop()可以设置非字符串的值。

以下是如何使用它的工作示例:

setInterval(function() {
  if ($("#chkBox1").prop("checked"))
    $("#chkBox1").prop("checked", false);
  else
    $("#chkBox1").prop("checked", true);
  }, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" value="Test" id="chkBox1" checked />

答案 1 :(得分:1)

好的,显然问题不在于prop / attr切换&#34;检查&#34;,而是在查看浏览器的开发者工具时更新属性。当我检查复选框时,选中的属性总是保持&#34;检查&#34;但是以下代码用于确定是否实际检查了复选框(@ War10ck的建议代码):

$('#check_box_2').is(':checked')