美文网首页
jquery多选框增加checked属性不显示选中的问题

jquery多选框增加checked属性不显示选中的问题

作者: size_of | 来源:发表于2017-10-26 20:24 被阅读0次

今年天做项目实现一个有多选按钮的复选框功能,但是当第二次点击全选按钮后发现子选项不显示被选中,上网查阅资料后找到了以下解决方法。
开始代码是这样的

//监听全选按钮点击事件
$('.selAll input').on('click', function () {
    //如果此时全选按钮被选中执行if中的代码
    if ($(this).is(':checked')) {
        $("#ordersend .wrapper input[type='checkbox']").attr("checked", true);
    } else {
        $("#ordersend .wrapper input[type='checkbox']").removeAttr("checked");
    }
})

后来查阅资料才知道:

  • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
  • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法
//checked属性是HTML固有属性,使用prop()函数总会返回一个布尔值
$("input[type='checkbox']").eq(0).prop("checked") == false
$("input[type='checkbox']").eq(0).prop("checked") == true

//但是使用attr()函数时如果元素中没有checked属性,则会返回undefined
$("input[type='checkbox']").eq(0).attr("checked") == undefined
$("input[type='checkbox']").eq(0).attr("checked") == true

所以下面的代码才是我们想要的效果

//监听全选按钮点击事件
$('.selAll input').on('click', function () {
    //如果此时全选按钮被选中执行if中的代码
    if ($(this).is(':checked')) {
        $("#ordersend .wrapper input[type='checkbox']").prop("checked", true);
    } else {
        $("#ordersend .wrapper input[type='checkbox']").removeAttr("checked");
    }
})

相关文章

网友评论

      本文标题:jquery多选框增加checked属性不显示选中的问题

      本文链接:https://www.haomeiwen.com/subject/wsxlpxtx.html