菜鸟问题:jquery无法设置checkbox选中

时光飞 2013-06-26 02:59:45
设置一个checkbox为选中状态,用jquery来实现
$("input").attr("checked","checked")

设置以后checkbox并没有变成选中状态,用chrome调试看了一下,checkbox中确实有checked属性,而且,值为checked,但是页面显示仍然为未选中状态
很奇怪,求赐教
...全文
26175 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
八二年的拉菲 2016-03-21
  • 打赏
  • 举报
回复
引用 5 楼 lijun_h 的回复:
用这个:$("input[type='checkbox']").prop("checked",true);
真相了!
顾小林 2015-08-29
  • 打赏
  • 举报
回复
$("input[type='checkbox']").prop("checked");
pandy_peng 2015-08-27
  • 打赏
  • 举报
回复
用prop完美解决
qh521yb 2014-07-17
  • 打赏
  • 举报
回复
这种方式 document.getElementById("id").checked = true; 可行
静心事成 2014-07-17
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:

$("input").prop("checked",true);
ttributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值。 例如, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected 应使用.prop()方法进行取值或赋值。 在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。 例如,考虑一个DOM元素的HTML标记中定义的<input type="checkbox" checked="checked" /> ,并假设它是一个JavaScript变量命名的elem : elem.checked true (Boolean) 将改变复选框的状态 $(elem).prop("checked") true (Boolean) 将改变复选框的状态 elem.getAttribute("checked") "checked" (String) 不会改变的复选框的初始状态; $(elem).attr("checked") (1.6) "checked" (String) 不会改变的复选框的初始状态; $(elem).attr("checked") (1.6.1+) "checked" (String) 将改变复选框的状态 $(elem).attr("checked") (pre-1.6) true (Boolean) 将改变复选框的状态 根据W3C的表单规范 ,在checked属性是一个布尔属性,这意味着只要该 attribute 存在,即使它没有值,或是一个空字符串,该属性对应的 property 就是 true。以下推荐的是兼容浏览器方式,判断 checkbox 元素的 checked 属性是否为"真" 的方法: if ( elem.checked ) if ( $(elem).prop("checked") ) if ( $(elem).is(":checked") ) 如果你使用jQuery 1.6 ,代码if ( $(elem).attr("checked") ),将获得一个属性(attribute) ,它不改变该复选框被选中和选中。它只是用来存储默认或选中属性的初始值。为了保持向后兼容,.attr() 方法从 jQuery 1.6.1+ 开始除了返回属性值外,还会更新 property 属性,因此 boolean attribute(布尔属性)不需要通过 .prop() 来改变其值。推荐使用上述方法之一,来取得 checked 的值。
学习了
xing_shou 2014-07-11
  • 打赏
  • 举报
回复
我也遇到了,1.10用prop处理 $("input").prop({checked:true});
张含韵 2014-01-23
  • 打赏
  • 举报
回复
这么长时间的问题了。。。。楼主早应该找到原因并解决了吧
ay转身遇 2014-01-23
  • 打赏
  • 举报
回复
座山观看。。。
l676331991 2014-01-22
  • 打赏
  • 举报
回复
attr是set/getAttribute的jQuery版,prop是this.XXX/this.XXXX=XX的jQuery版。 我一般保险的用这个,不用关心jQuery版本和浏览器问题

$("input")[0].checked = true;
if($("#checkAll")[0].checked) {
  $(".checkIt").each(function(){this.checked = true;})
}
老生长谈的问题,归根结底是这俩的区别:

checkboxElement.setAttribute('checked','checked');
checkboxElement.checked = true;
类似的还有:inputElement.value, optionElement.selected, inputElement.disabled.... 如果某个版本的jQ在某个浏览器下用attr("checked","checked")能生效,那只能说明jQ做了特殊的treat,对已经存在于DOM中的checkbox来说,其UI表现(UI上选中与否)也即真实值,与checkboxElement.checked这个布尔值是时时对应更新的,那个Attribute只在浏览器第一次渲染这个控件的时候作为初始值之用,setAttribute无法时时更新UI(真实值)。 论attribute和property(属性和属性,中文居然也匮乏了。。。)。 参见:http://www.w3help.org/zh-cn/causes/SD9006
sdyxslj 2014-01-22
  • 打赏
  • 举报
回复
引用 15 楼 lxh0959 的回复:
http://api.jquery.com/prop/ 网页中有详细介绍。我在IE10和chrome中选中后,用attr不能改变checkbox的状态,换成prop就可以了。jQuery版本是1.10.1
确实是这样。谢谢。
龙的传人1988 2013-11-22
  • 打赏
  • 举报
回复
<head> $(function(){ $(":checkbox").attr("checked",true); }) </head>
lxh0959 2013-11-21
  • 打赏
  • 举报
回复
http://api.jquery.com/prop/ 网页中有详细介绍。我在IE10和chrome中选中后,用attr不能改变checkbox的状态,换成prop就可以了。jQuery版本是1.10.1
a102470 2013-06-27
  • 打赏
  • 举报
回复
谁在盗用版主头像啊
ZHOU西口 2013-06-26
  • 打赏
  • 举报
回复
引用 12 楼 u011212399 的回复:
[quote=引用 11 楼 scqlmm 的回复:] [quote=引用 2 楼 scqlmm 的回复:] <html> <meta content="text/html;charset=shift_jis"/> <head> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input").attr("checked","checked"); }); </script> </head> <body> test: <input type="checkbox"/><br/> </body> </html>
这样就可以的啊
我这个就是在chrome下面测试的,没有这样的问题啊[/quote] 我的也是在chrome下测试的,这个问题就是有时候会出现,纠结[/quote]
引用 12 楼 u011212399 的回复:
[quote=引用 11 楼 scqlmm 的回复:] [quote=引用 2 楼 scqlmm 的回复:] <html> <meta content="text/html;charset=shift_jis"/> <head> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input").attr("checked","checked"); }); </script> </head> <body> test: <input type="checkbox"/><br/> </body> </html>
这样就可以的啊
我这个就是在chrome下面测试的,没有这样的问题啊[/quote] 我的也是在chrome下测试的,这个问题就是有时候会出现,纠结[/quote]chrome下没任何问题呀!
时光飞 2013-06-26
  • 打赏
  • 举报
回复
引用 11 楼 scqlmm 的回复:
[quote=引用 2 楼 scqlmm 的回复:] <html> <meta content="text/html;charset=shift_jis"/> <head> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input").attr("checked","checked"); }); </script> </head> <body> test: <input type="checkbox"/><br/> </body> </html>
这样就可以的啊
我这个就是在chrome下面测试的,没有这样的问题啊[/quote] 我的也是在chrome下测试的,这个问题就是有时候会出现,纠结
枫醉秋 2013-06-26
  • 打赏
  • 举报
回复
引用 2 楼 scqlmm 的回复:
<html> <meta content="text/html;charset=shift_jis"/> <head> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input").attr("checked","checked"); }); </script> </head> <body> test: <input type="checkbox"/><br/> </body> </html>
这样就可以的啊
我这个就是在chrome下面测试的,没有这样的问题啊
时光飞 2013-06-26
  • 打赏
  • 举报
回复
更新一下,这个情况是出现在Chrome浏览器下的,在IE中是完全没问题的
ILOVE_ASPNET 2013-06-26
  • 打赏
  • 举报
回复

例如,考虑一个DOM元素的HTML标记中定义的<input type="checkbox" checked="checked" /> ,并假设它是一个JavaScript变量命名的elem :
elem.checked 	true (Boolean) 将改变复选框的状态
$(elem).prop("checked") 	true (Boolean) 将改变复选框的状态
elem.getAttribute("checked") 	"checked" (String) 不会改变的复选框的初始状态;
$(elem).attr("checked") (1.6) 	"checked" (String) 不会改变的复选框的初始状态;
$(elem).attr("checked") (1.6.1+) 	"checked" (String) 将改变复选框的状态
$(elem).attr("checked") (pre-1.6) 	true (Boolean) 将改变复选框的状态
天际的海浪 2013-06-26
  • 打赏
  • 举报
回复

$("input").prop("checked",true);
ttributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值。 例如, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected 应使用.prop()方法进行取值或赋值。 在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。 例如,考虑一个DOM元素的HTML标记中定义的<input type="checkbox" checked="checked" /> ,并假设它是一个JavaScript变量命名的elem : elem.checked true (Boolean) 将改变复选框的状态 $(elem).prop("checked") true (Boolean) 将改变复选框的状态 elem.getAttribute("checked") "checked" (String) 不会改变的复选框的初始状态; $(elem).attr("checked") (1.6) "checked" (String) 不会改变的复选框的初始状态; $(elem).attr("checked") (1.6.1+) "checked" (String) 将改变复选框的状态 $(elem).attr("checked") (pre-1.6) true (Boolean) 将改变复选框的状态 根据W3C的表单规范 ,在checked属性是一个布尔属性,这意味着只要该 attribute 存在,即使它没有值,或是一个空字符串,该属性对应的 property 就是 true。以下推荐的是兼容浏览器方式,判断 checkbox 元素的 checked 属性是否为"真" 的方法: if ( elem.checked ) if ( $(elem).prop("checked") ) if ( $(elem).is(":checked") ) 如果你使用jQuery 1.6 ,代码if ( $(elem).attr("checked") ),将获得一个属性(attribute) ,它不改变该复选框被选中和选中。它只是用来存储默认或选中属性的初始值。为了保持向后兼容,.attr() 方法从 jQuery 1.6.1+ 开始除了返回属性值外,还会更新 property 属性,因此 boolean attribute(布尔属性)不需要通过 .prop() 来改变其值。推荐使用上述方法之一,来取得 checked 的值。
  • 打赏
  • 举报
回复
恩恩,楼上的都ok,貌似你写的也是ok的 要不行就用dom,document.getElementById("id").checked = true;
加载更多回复(6)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧