$(elem).attr(“checked”)给出相反的结果

这个问题在这里已经有了答案:

  • .prop()vs .attr()17答案

  • 问题是你正在检查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