2013-03-05 87 views
-2

我有一些旧的jQuery工作代码:jQuery是否支持attr对某些DOM属性的支持?

if ($element.attr('checked') === 'checked') 

这是从来没有rewriten到建议:

if ($element.prop('checked')) 

但它的工作。

但现在,我已经更新到jQuery 1.9.1和访问与attr检查返回未定义。这是否意味着jQuery放弃了对某些DOM属性(如checked/disabled/selected)的支持?

+2

http://api.jquery.com/attr/“从jQuery 1.6开始,对于尚未设置的属性,.attr()方法返回undefined。另外,.attr()不应该用于普通对象,数组,窗口或文档。要检索和更改DOM属性,请使用.prop()方法。“ – jantimon 2013-03-05 14:04:18

+0

它在[1.6](http://ejohn.org/blog/jquery-16-and-attr/)中被改变了,你是从1.5跳起的吗? – epascarello 2013-03-05 14:04:40

+1

你有没有试过阅读[jQuery文档](http://api.jquery.com/attr/)? – 2013-03-05 14:04:47

回答

1

jQuery 1.6引入了用于设置或获取节点属性的.prop()方法,并且不推荐使用.attr()来设置属性。但是,1.9以下的版本继续支持在特定情况下使用.attr()。在向后兼容的名称中的这种行为在使用区分属性和属性的选择器时会引起混淆。

查看jQuery本身的升级指南。 .attr() versus .prop()

+0

jQuery页面上记录的更改。谢谢,这正是我的问题的答案。 – dragonfly 2013-03-05 14:21:25

+0

谢谢随时:) – 2013-03-05 15:53:18