在jQuery中prop()和attr()的差异以及何时使用attr()和prop()。
在jQuery中prop()和attr()的差异以及何时使用attr()和prop()。
这个问题已经有答案了:.prop() vs .attr()
我在一些地方看到jQuery中使用的是.attr(),在另一些地方使用的是.prop()。但是我在SO和Google中搜索,深感困惑。请告诉我这两者之间的确切区别以及何时使用它们。
我看到了以下链接:jQuery attr vs. prop, there are a list of props?,jQuery attr vs prop?,但我没有得到答案。
.attr()
可以改变HTML标签的属性。
.prop()
根据DOM树可以更改HTML标签的属性。
如这个链接中所示的例子。一个输入框可以有属性"value",它等于您输入的默认值。如果用户更改了输入框中的值,属性"value"在DOM树中会发生更改,但原始属性仍然保留。
因此,如果您想为HTML标签的属性设置默认值,请使用.attr()
函数。如果该值可以被用户更改(例如输入框、复选框、单选框等),请使用.prop()
函数获取最新值。
参考资料:HTML:属性与属性值之间的区别
示例代码:
$(document).ready(function() { console.log($('#test').attr('value') + " - With .attr()"); $('#answer').click(function() { console.log($('#test').attr('value') + " - With .attr()"); console.log($('#test').prop('value') + " - With .prop()"); }); });
Change the input value and check the console...
来自文档
属性和属性值之间的区别在特定情况下可能很重要。jQuery 1.6之前,.attr()方法有时在检索某些属性时考虑到属性值,这可能会导致不一致的行为。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方式,而.attr()方法检索属性。
例子
例如,selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected应该使用.prop()方法检索和设置。在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不在attr的范围内。这些没有相应的属性,只有属性。
评论后更新
可以为HTML元素设置属性。在编写源代码时定义它,一旦浏览器解析代码,相应的DOM节点将被创建,它是一个对象,因此具有属性。
简单的例子可以是..
这里,type、value、id是属性。一旦浏览器呈现它,您将获得其他属性,如align、alt、autofocus、baseURI、checked等。
链接如果您想更多地了解此内容