jquery 复选框选中属性未切换

huwehgph  于 2022-12-18  发布在  jQuery
关注(0)|答案(2)|浏览(196)

我在尝试添加由复选框启动的jQuery功能时遇到了一个奇怪的问题,我的复选框似乎在切换checked属性,因为在单击时,复选标记会在视觉上切换,但“checked”属性实际上从未更改。
下面是我的问题的一个例子: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来确定复选框是否被选中?

oymdgrw7

oymdgrw71#

使用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 />
06odsfpq

06odsfpq2#

好吧,显然问题不在于prop/attr切换为“选中”,而在于浏览器开发者工具时属性的更新。当我检查复选框时,checked属性总是保持为“选中”,但是下面的代码可以确定复选框是否真的被选中(@War10ck的建议代码):

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

相关问题