欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于jQuery中.attr()和.prop()的问题探讨

程序员文章站 2024-02-25 15:42:51
话说写了几句代码在ie8上能正常运行,chrome和ff却不行,朋友说这就是rp啊,郁闷! 其实功能需求是这样的,两个radio:男和女,一个button:重置。启动页面默认选中男,在用户选择女之...

话说写了几句代码在ie8上能正常运行,chrome和ff却不行,朋友说这就是rp啊,郁闷!

其实功能需求是这样的,两个radio:男和女,一个button:重置。启动页面默认选中男,在用户选择女之后又点击重置按钮,需要恢复到默认状态。

. 代码如下:


<input type="radio" id="hrdmale" checked="checked" name="sex" value="male" /><label for="hrdmale">男</label>
<input type="radio" id="hrdfemale" name="sex" value="female" /><label for="hrdfemale">女</label>
<button id="reset">重置</button>


我的js代码是这样的:

. 代码如下:


$("#reset").click(function() {
  $("input[name='sex']:first").attr("checked",true);
});


结果就是开头提到的样子,问了几个人都说不清楚,后来查了api后知道在jquery1.6+的版本中添加了.prop()的方法,貌似和.attr()没什么区别,都可以用来获取和设置属性值。后来又了解到.prop()方法适用于boolean值的属性,官方解释selectedindex, tagname, nodename, nodetype, ownerdocument, defaultchecked, 以及defaultselected 等属性需用.prop()方法。另外,看网上还有好多说“添加属性名称该属性就会生效应该使用.prop()”,本人没验证其他属性,倒是"checked"属性的确是添加就生效。所以,红色的两点应该就是.attr()和.prop()的区别所在了。

所以,将上面click事件方法里面的代码改成下面的就ok了。

. 代码如下:


$("input[name='sex']:first").prop("checked",true);