jQuery函数attr和prop的区别

 我来答
匿名用户
推荐于2016-08-25
展开全部

简而言之就是1.6版本更新的内容,为了防止此前的attr的一些bug的修复,prop专门是针对表单比如checked新版本中就只能用prop生效,而attr无效;


.prop()和 .attr()区别

下面是关于jQuery1.6和1.6.1中Attributes模块变化的描述,以及.attr()方法和.prop()方法的首选使用

Attributes模块的变化是移除了attributes和properties之间模棱两可的东西,但是在jQuery社区中引起了一些混乱,因为在1.6之前的所有版本中都使用一个方法(.attr())来处理attributes和properties。但是老的.attr()方法有一些bug,很难维护。jQuery1.6.1对Attributes模块进行了更新,并且修复了几个bug。

elem.checked true (Boolean) Will change with checkbox state

$(elem).prop("checked") true (Boolean) Will change with checkbox state

elem.getAttribute("checked") "checked" (String) Initial state of the checkbox; does not change

$(elem).attr("checked")(1.6) "checked" (String) Initial state of the checkbox; does not change

$(elem).attr("checked")(1.6.1+) "checked" (String) Will change with checkbox state

$(elem).attr("checked")(pre-1.6) true (Boolean) Changed with checkbox state

if ( elem.checked )

if ( $(elem).prop("checked") )

if ( $(elem).is(":checked") )

这三个都是返回Boolean值。

最普通的attributes是checked,selected,disabled和readOnly,但下面是jQuery1.6.1支持的使用.attr()动态地取得和设置boolean attributes/properties的完整列表:


autofocus, autoplay, async, checked, controls, defer, disabled,  

hidden, loop, multiple, open, readonly, required, scoped, selected 


还是建议使用.prop()方法来设置这些boolean attributes/properties,即使这些用例没有转换成使用.prop()方法,但是你的代码仍然可以在jQuery1.6.1中正常运行。

寻梦生
2014-12-12 · TA获得超过179个赞
知道小有建树答主
回答量:581
采纳率:50%
帮助的人:453万
展开全部
差别较多,直接给你个链接自己看吧:
http://blog.sina.com.cn/s/blog_655388ed01017cnc.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式