jQuery无法设置checkbox复选框选中原因解析:
很多编码者可能遇到这样的奇怪情况,那就是使用jQuery设置checkbox复选框选中状态的时候出现无效现象,尽管代码没有任何错误,下面就介绍一下为什么会出现此种现象,和解决此问题的方式,希望能够给需要的朋友带来帮助。
先来看一个代码实例:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落</title> <script type="text/javascript" src="mytest/demo/jquery-1.9.1.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#selectall").click(function(){ $('input[type=checkbox]').attr("checked","checked") }) $("#cancel").click(function(){ $('input[type=checkbox]').attr('checked',false); }) }) </script> </head> <body> <input type="checkbox" value="蚂蚁部落"/>蚂蚁部落一 <input type="checkbox" value="蚂蚁部落"/>蚂蚁部落二 <input type="button" id="selectall" value="全选"/> <input type="button" id="cancel" value="取消"/> </body> </html>
在以上代码中,当第一次全选,然后再取消全选之后,再次点击全选,这个时候就会没有作用,这个在jQuery1.9之前是没有任何问题的,在IE8和IE8以下浏览器也没有问题,为了解决这个问题,代码修改如下:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落</title> <script type="text/javascript" src="mytest/demo/jquery-1.9.1.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#selectall").click(function(){ $('input[type=checkbox]').prop("checked","checked") }) $("#cancel").click(function(){ $('input[type=checkbox]').prop('checked',false); }) }) </script> </head> <body> <input type="checkbox" value="蚂蚁部落"/>蚂蚁部落一 <input type="checkbox" value="蚂蚁部落"/>蚂蚁部落二 <input type="button" id="selectall" value="全选"/> <input type="button" id="cancel" value="取消"/> </body> </html>
只要将attr()函数修改为prop()函数即可。主要原因主要是涉及到元素property和attribute属性的区别问题。
相关阅读:
1.property和attribute属性可以参阅js的property和attribute两种属性简单介绍一章节。
2.浏览器兼容性问题可以参阅js的Attribue属性兼容性问题简单介绍一章节。
原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=13046
更多内容可以参阅:http://www.softwhy.com/jquery/