在尝试添加由复选框启动的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来确定是否选中了复选框?
答案 0 :(得分:2)
设置.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')