prop()和attr()在jQuery和何时使用attr()和prop()的区别

我在一些地方看到.attr()用在jQuery中。在一些地方.prop()被使用。但是我在SOsearch和谷歌我很困惑。请告诉我这两者之间的确切区别,以及何时使用它们。

我已经看到以下链接jQuery attr与道具,有一个道具列表? jQuery attr vs道具?

但是我没有得到答案,请帮助我。提前感谢。

在给出一个downvote之前,请解释原因,然后我会纠正我的下一个职位。

从文档

属性和属性之间的差异在特定情况下可能很重要。 在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。 从jQuery 1.6开始,.prop()方法提供了显式检索属性值的方法,而.attr()检索属性。

例如,应该使用.prop()方法检索并设置selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected。 在jQuery 1.6之前,这些属性可以用.attr()方法检索,但是这不在attr的范围之内。 这些没有相应的属性,只是属性。

更新后评论

您可以为HTML元素设置一个属性。 你在编写源代码的时候定义它,一旦浏览器parsing你的代码,就会创build相应的DOM节点,这是一个具有属性的对象。

简单的例子可以

<input type="test" value="test" id="test" /> 

这里的type,value,id是属性。一旦浏览器渲染它,你会得到像align,alt,autofocus,baseURI,checked等其他属性。

链接,如果你想阅读更多关于这一点

.attr()更改该HTML标记的属性。

.prop()根据DOM树更改该HTML标记的属性。

正如这个链接中的例子所示。 input字段可以具有属性“值”。 这将等于您input的默认值。 如果用户更改input字段中的值,则属性“值”在DOM树中发生变化,但原始属性保留。

所以基本上,如果你想为HTML标签的属性设置默认值,使用.attr()函数。 如果用户可以更改该值(如input,checkbox,收音机等),则使用.prop()函数获取最新值。

http://jquery-howto.blogspot.com/2011/06/html-difference-between-attribute-and.html

JQuery是一个不断变化的库,有时他们会定期进行改进。 .attr()用于从HTML标签中获取属性,而它的function完全正确.prop()后来被添加为更多的语义,并使用像'checked'和'selected'这样的无值属性更好地工作。

build议如果您使用的是更高版本的JQuery,则应尽可能使用.prop()。