一开始尝试使用
table.$('input[type="checkbox"]:checked').attr("checked", "")
貌似可以,不过多点几次就无效了,看了html源代码,发现都给input加上了checked = "checked"

正确的做法:
$(this).find('input:checkbox').prop("checked", true)

 

原因:这里涉及两个概念  特性(attribute) 和属性(Property)。

attribute是dom节点自带的属性,如id,class,自定义放在html 标签内的属性(customattr)等,放在dom对象的attributes属性中,这个属性的类型是NamedNodeMap。

property是dom元素作为对象,其附加的内容,如childnodes,firstchild等,直接在对象上,部分attribute特性如id,checked,disabled等会被添加到元素对象上,作为dom属性。

用.attr()操作 一般只更改了 attributes中的属性值,如果这个属性是dom元素的一个特性属性的话,没有改到对应的特性,特性是内部实现某些功能的参照,比如 radio 的checked 特性未改,显示的选择状态也没有及时更新到。