什么时候最好使用`attr()`而不是`.prop()`?
这个问题在这里已经有了答案:
适用于jQuery 1.9之前
下面是一些属性和属性列表,以及在获取或设置它们时通常应使用哪种方法。 这是首选的用法,但.attr()
方法在任何情况下都可以使用。
+------------------------------------+------------+-----------+
| Attribute/Property | .attr() | .prop() |
+------------------------------------+------------+-----------+
| accesskey | ✓ | |
| align | ✓ | |
| async | | ✓ |
| autofocus | | ✓ |
| checked | | ✓ |
| class | ✓ | |
| contenteditable | ✓ | |
| disabled | | ✓ |
| draggable | ✓ | |
| href | ✓ | |
| id | ✓ | |
| label | ✓ | |
| location (i.e., window.location) | | ✓ |
| multiple | | ✓ |
| readOnly | | ✓ |
| rel | ✓ | |
| selected | | ✓ |
| src | ✓ | |
| tabindex | ✓ | |
| title | ✓ | |
| type | ✓ | |
| width (if needed over .width()) | ✓ | |
+------------------------------------+------------+-----------+
.attr()
和.prop()
都不应该用于获取/设置值。 改为使用.val()
方法(尽管使用.attr(“value”, “somevalue”)
将起作用。
简介: .prop()
方法应该用于布尔属性/属性和html中不存在的属性(如window.location
)。 所有其他属性(您可以在html中看到的)可以并应该继续使用.attr()
方法进行操作。
参考
属性和属性之间的差异在特定情况下很重要。 在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6开始,.prop()方法提供了显式检索属性值的方法,而.attr()检索属性。
例如,应该检索selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected并使用.prop()方法进行设置。 在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不属于attr范围。 这些没有相应的属性,只是属性。
关于布尔属性,请考虑由HTML标记定义的DOM元素,并假定它位于名为elem的JavaScript变量中:
elem.checked true(布尔型)将以复选框状态变化$(elem).prop(“checked”)true(布尔型)将随复选框状态
elem.getAttribute(“checked”)“checked”(String)复选框的初始状态; 不改变$(elem).attr(“checked”)(1.6)“checked”(String)复选框的初始状态; 不会改变
$(elem).attr(“checked”)(1.6.1+)“checked”(String)将复选框状态变化$(elem).attr(“checked”)(pre-1.6)true(Boolean)复选框状态
资源
链接地址: http://www.djcxy.com/p/27539.html上一篇: When is it preferable to use `attr()` instead of `.prop()`?