去面试,老多人问会不会jQuery啊,会不会ExtJS啊,以前都零星使用过,是使用别人封装好的版本,没单独研究过这些前端技术,闲暇之余,先研究研究jQuery。
找了本书,做了个jQuery实现全选功能的例子,觉得代码逻辑上都没有问题,第二次点击【全选】按钮页面就是无法勾选(在IE、FF、Chrome浏览器下均是以上症状)。
原始代码如下:
<pre name="code" class="javascript"> /**全选复选框--单击 */ $("#chkAll").change(function(){ //勾选全选 if(this.checked){ $("table tr td input[type=checkbox]").attr("checked",true); }else{ $("table tr td input[type=checkbox]").attr("checked",false); } });html代码如下:
<table><tr> <td><input id="chk5" name="ch" type="checkbox" value="4"></td> <td>1005</td> <td><img src="image/book/book5.jpg" alt=""/></td> <td>朱涛</td> <td>男</td> <td>27 元</td> </tr> <tr> <td><input id="chk6" name="ch" type="checkbox" value="5"></td> <td>1006</td> <td><img src="image/book/book6.jpg" alt=""/></td> <td>李奎</td> <td>男</td> <td>56 元</td> </tr> </table> <table> <tr> <td> <span><input id="chkAll" type="checkbox"/>全部</span> <span><input id="btnDel" class="btn" type="button" value="删除"/></span> </td> </tr> </table>
网上查资料,把attr('checked',true)都换成prop('checked',true)即可。
ps:同事说他的代码这样写就执行正常。
网上查阅资料知:jQuery1.9.1针对checkbox的调整方法,用prop代替attr。
在jquery 1.8.x中的版本,对于checkbox的选中与不选中操作如下:
1.判断是否选中:$('#checkbox').prop('checked')
2.设置选中与不选中状态:
$('#checkbox').attr('checked',true)$('#checkbox').attr('checked',false)
但此方法在jquery1.9.1中,有些处理不一样,同事执行正常的使用的正好是1.8版本,本人使用的是1.11版本。
参考网址:http://www.jb51.net/article/49593.htmhttp://my.oschina.net/cindy89/blog/315999