我有一个脚本,它应该检查表中的所有复选框。它第一次检查所有复选框,之后取消检查。然而,当我试图重新检查它们时,什么也没有发生。
jQuery:
$('#selectAll').click(function(e){
var table= $(e.target).closest('table');
$('td input:checkbox',table).attr('checked',e.target.checked);
});
字符串
HTML:
<table>
<tr>
<th>
<input type="checkbox" id="selectAll" />
</th>
<th>
hi!
</th>
</tr>
<tr>
<td>
<input type="checkbox" id="1"/>
</td>
<td>
hi!
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="2"/>
</td>
<td>
hi!
</td>
</tr>
</table>
型
这是一个小提琴的行为:
http://jsfiddle.net/EEJrU/
为什么点击一次就不行了?
5条答案
按热度按时间eiee3dmh1#
您需要使用.prop()而不是.attr()
字符串
演示:Fiddle
属性与属性
rqmkfv5c2#
简单的jQuery解决方案,检测表中选中的输入,并更改main(selectAll)复选框的状态:
或者香草解决方案:
sulc1iza3#
字符串
xxhby3vn4#
这可能对prop()和attr()之间的区别很有用。请注意本文.prop() vs .attr()中的这一行:
“该属性值反映默认状态,而不是当前可见状态(某些较旧版本的IE除外,因此操作更加困难)。该属性不会告诉您有关页面上的复选框是否被选中的任何信息。”
所以一般来说,使用prop()而不是attr()。
sf6xfgos5#
万一
<table>
中有<tbody>
,查找<td>
到closet表不起作用。它对我的作用是这样的:
字符串