如果选中,则单击复选框应选中警报,如果没有,则不提供警告。这是代码:
<input type = "checkbox" id = "all" value="all" /> MyCheckbox
<script src="jquery-2.1.4.js"></script>
<script type="text/javascript">
$("input[type=checkbox]").click(function(){
if ($(this).attr("checked")) {
alert("checked");
}
else{
alert("not checked");
}
});
</script>
最初未选中复选框。一旦我点击它,调试器就会显示它的值为true。现在控制应输入if}} block,因为它的值为true,但是在else {}块中输入。 (我使用断点)。
为什么会这样。请帮助我尝试几个小时。
答案 0 :(得分:1)
问题是您正在检查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
答案 1 :(得分:1)
这:
$(this).attr("checked") //in old versions of jquery this yield "checked" ,
收益率undefined
,这是一个虚假陈述。
从jQuery 1.6开始,.attr()方法为属性返回undefined 没有设置
您可以使用:
if ($(this).is(":checked"))
或
$(this).prop("checked")
答案 2 :(得分:0)
从 jQuery 1.6 开始, .attr()方法为尚未设置的属性返回undefined。要检索和更改DOM属性,例如表单元素的已选中,已选中或已禁用状态,请使用 .prop()方法。