博主在折腾 checkbox
的全选问题时,遇到了一个问题:
F12 查看,明明 checked="checked"
属性已经存在,但是复选框就是不打钩。
博主使用的是 jquery-2.1.3,因为完全不打算支持 IE 9 以下的浏览器,所以果断换成 2.x 的版本。
$('.check-all').click(function () { $(this).parent().find("input[type='checkbox']").attr('checked', $(this).is(':checked')); });
博主出现的情况是:
刷新页面后只点 check-all
复选框时,其他复选框能选上,再点一下 check-all
复选框,其他复选框全部取消,之前一切正常,但是第三次点击 check-all
复选框时,其他复选框带上 checked="checked"
属性,但是不打钩;
刷新页面后先点其他复选框,再点 check-all
复选框,除了第一个点击的复选框外其他复选框能选上,再点一下 check-all
复选框,之前选上的复选框全部取消,第三下点击 check-all
复选框依旧出现其他复选框带上 checked="checked"
属性,但是不打钩的情况。
博主感到非常困扰,难道以前学的 jquery 都忘光了?之后去翻 jquery 的文档,发现需要用 .prop
代替 .attr
,把 code 变成下面内容
$('.check-all').click(function () { $(this).parent().find("input[type='checkbox']").prop('checked', $(this).is(':checked')); });
之后发现一切正常了。
jquery 文档一句:The checked attribute value does not change with the state of the checkbox, while the checked property does.
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-937.html