请假设它与.prop() vs .attr()重复
,请花时间完整阅读该问题我已阅读.prop() vs .attr()以及一些副本和相关的非重复内容。我的问题是:在处理HTML和DOM时,何时将值传递给 .attr()是否合适?
当然,简单的答案是"为什么,只要你想设置或修改属性的值 - 否则(通常)使用.prop()。"
但我真正想知道的是你应该什么时候做。在该方法的jQuery文档中,我看到了在id
元素上设置src
,alt
title
和img
等内容的示例。但是,使用.prop()设置这些特定属性,文档似乎并没有给出任何关于为什么要这样做的指示。
我所追求的是何时使用.attr()来设置事物而不是.prop()的指导原则。
相关说明:我正在处理的特定情况是改变表单上的操作的正确方法,但实际上我希望决策背后的观点和理解。
编辑为了澄清,我不是在寻找:
否则,我们可以将其标记为重复并将其称为一天:)目前为止所提供的内容没有任何违法行为 - 只是想明确表示我和#39;正在寻找有关何时确定何时使用.attr()来设置属性值的信息,这是我在古老的.prop() vs .attr()上找不到的信息(尽管它是'在那里,我错过了,让我们明确地将其标记为重复!)谢谢!
答案 0 :(得分:1)
来自http://jq4you.blogspot.in/2013/04/jquery-attr-vs-prop-difference.html:
Jquery attr()vs prop()
jQuery.attr()
获取匹配元素集中第一个元素的属性值。
然而,
jQuery.prop()
获取匹配元素集中第一个元素的属性值。
在jQuery 1.6之前,attr()方法在检索某些属性时有时会考虑属性值,这会导致 不一致的行为。因此,引入了prop()方法。如 jQuery 1.6。 ,.prop()方法提供了一种显式方法 检索属性值,而.attr()检索属性。
究竟属性是什么?
属性带有关于HTML元素的附加信息 在
name=”value”
对。您可以为HTML元素设置属性 在编写源代码时定义它。简单的例子可以是:
<input id="test" type="test" value="test"> here, "type","value", "id" are attributes of the input elements.
我将总结主要问题:
您通常需要prop()而不是attr()。
在大多数情况下,prop()执行attr()过去做的事情。在代码中用prop()替换对attr()的调用通常是
工作- 属性通常比属性更容易处理。
- 属性值可能只是一个字符串,而属性可以是任何类型。例如,checked属性是一个布尔值 style属性是一个对象,每个对象都有各自的属性 风格,大小属性是一个数字。
如果属性和具有相同名称的属性都存在,通常更新一个将更新另一个,但事实并非如此 对于某些输入属性,例如值和已检查:对于 这些属性,属性总是代表当前状态
而属性(旧版本的IE除外)对应于 输入的默认值/检查度(反映在defaultValue中 / defaultChecked属性)。此更改删除了在属性和属性前面停留的一些魔法jQuery层,这意味着jQuery开发人员将 必须要了解一下属性与之间的区别 属性。这是件好事。
Jsfiddle尝试自己
答案 1 :(得分:0)
经过大量阅读和重新阅读后,我认为答案就是这样。 (而不是尝试仅提取适用于原始问题的部分内容,我认为为上下文提供完整的“规则”是有意义的。)
<强> 1。仅在
时使用.attr()
<强> 2。在所有其他情况下使用.prop()
第3。除了价值。使用.val()
获取/设置输入值。
我认为通过遵循这些规则,当您将值传递给.attr()时,属性发生的问题的答案最终会成为“谁在乎?”。如果要删除当前不推荐使用.attr('foo', 'bar')
来设置属性值,那么.attr()
对于.attr()
有用的答案最终会“设置/修改data- * attributes”。
如果其他人在使用.prop()
时可以考虑其他情况,那么请优先使用>>> len(set(map(lambda x: x["propertyB"] if 'propertyA' == {} else None ,l)))
1
。