我在某些地方看到 .attr() 在 jQuery 中使用。在某些地方 .prop() 被使用。但是我在 SO 和 google 中搜索我很困惑。请告诉我这两者之间的确切区别以及何时使用它们.
我看过下面的链接 jQuery attr vs. prop,有没有 props 的列表? jQuery attr 与道具?
但我没有得到答案。请帮助我。在此先感谢。
在投反对票之前,请解释原因,然后我将在下一篇文章中更正。
我在某些地方看到 .attr() 在 jQuery 中使用。在某些地方 .prop() 被使用。但是我在 SO 和 google 中搜索我很困惑。请告诉我这两者之间的确切区别以及何时使用它们.
我看过下面的链接 jQuery attr vs. prop,有没有 props 的列表? jQuery attr 与道具?
但我没有得到答案。请帮助我。在此先感谢。
在投反对票之前,请解释原因,然后我将在下一篇文章中更正。
来自文档
属性和属性之间的区别在特定情况下可能很重要。在 jQuery 1.6 之前,.attr() 方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从 jQuery 1.6 开始,.prop() 方法提供了一种显式检索属性值的方法,而 .attr() 检索属性。
例子
例如,应使用 .prop() 方法检索和设置 selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked 和 defaultSelected。在 jQuery 1.6 之前,可以使用 .attr() 方法检索这些属性,但这不在 attr 的范围内。这些没有对应的属性,只是属性。
评论后更新
您可以为 HTML 元素设置属性。您在编写源代码时定义它,一旦浏览器解析您的代码,将创建相应的 DOM 节点,这是一个具有属性的对象。
简单的例子可以是..
<input type="test" value="test" id="test" />
这里的type、value、id是属性。浏览器渲染后,你会得到其他属性,如 align、alt、autofocus、baseURI、checked等。
如果您想了解更多关于此的链接
.attr()
更改该 HTML 标记的属性。
.prop()
根据 DOM 树更改该 HTML 标记的属性。
正如此链接中的示例所示。输入字段可以具有属性“值”。这将等于您输入的默认值。如果用户更改输入字段中的值,则 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()");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>Change the input value and check the console...</div>
<input type="text" id="test" value="Sample">
<button id="answer">Click Me</button>
JQuery 是一个不断变化的库,有时他们会定期改进。.attr() 用于从 HTML 标记中获取属性,虽然它功能完善,但后来添加了 .prop() 以更具语义性,并且它更适用于像“checked”和“selected”这样的无值属性。
建议如果您使用的是更高版本的 JQuery,您应该尽可能使用 .prop()。