$(elem).attr(“checked”)给出相反的结果
这个问题在这里已经有了答案:
问题是你正在检查checked
属性,当检查状态改变时它不会被删除或添加。 这是一个你应该了解属性和属性的细微差别。 您需要比较复选框元素的checked
属性,而不是属性。
此外,最好使用change
事件处理程序(因为您不仅可以使用鼠标点击复选框,而且还可以使用键盘来复选)。
$("input[type=checkbox]").change(function() {
if (this.checked) {
alert("checked");
}
else {
alert("not checked");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type = "checkbox" id = "all" value="all" /> MyCheckbox
这个 :
$(this).attr("checked") //in old versions of jquery this yield "checked" ,
产量undefined
,这是一个Falsy声明。
从jQuery 1.6开始,对于尚未设置的属性,.attr()方法返回undefined
您可以使用:
if ($(this).is(":checked"))
要么
$(this).prop("checked")
从jQuery 1.6开始 ,对于尚未设置的属性,.attr()方法返回undefined。 要检索和更改表单元素的选中,选中或禁用状态等DOM属性,请使用.prop()方法。
链接地址: http://www.djcxy.com/p/27543.html上一篇: $( elem ).attr("checked") giving opposite results
下一篇: jquery 1.6.2 issue using .prop() for checked and disabled