用法一
.attr( attributeName ) => String
.attr( attributeName ) => String
说明:获取匹配元素集中第一个元素的属性值。
.attr()
方法仅获取匹配集中first
元素的属性值。要单独获取每个元素的值,请使用循环构造,例如 jQuery 的 .each()
或 .map()
方法。
使用 jQuery 的 .attr()
方法获取元素属性的值有两个主要好处:
- 方便:它可以直接在 jQuery 对象上调用并链接到其他 jQuery 方法。
-
跨浏览器一致性:某些属性的值在不同浏览器之间报告不一致,甚至在单个浏览器的版本之间。这
.attr()
方法减少了这种不一致。
注意:属性值是字符串,除了一些属性,例如 value 和 tabindex。
从 jQuery 1.6 开始,.attr()
方法返回undefined
对于尚未设置的属性。要检索和更改 DOM 属性,例如表单元素的 checked
、 selected
或 disabled
状态,请使用 .prop() 方法。
属性与属性
attributes
和properties
之间的区别在特定情况下可能很重要。 Before jQuery 1.6 ,.attr()
方法有时会在检索某些属性时考虑属性值,这可能会导致行为不一致。 As of jQuery 1.6 ,.prop()
方法提供了一种显式检索属性值的方法,而 .attr()
检索属性。
例如,selectedIndex
、tagName
、nodeName
、nodeType
、ownerDocument
、defaultChecked
和defaultSelected
应该使用.prop()
方法检索和设置。在 jQuery 1.6 之前,可以使用 .attr()
方法检索这些属性,但这不在 attr
的范围内。这些没有对应的属性,只是属性。
关于布尔属性,考虑由 HTML 标记 <input type="checkbox" checked="checked" />
定义的 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" )
(pre-1.6)
|
true (布尔值)随复选框状态更改 |
根据W3C 表格规范, 这checked
属性是一个boolean attribute
,这意味着相应的属性是真的如果该属性完全存在 - 例如,即使该属性没有值或设置为空字符串值,甚至是 "false"。所有布尔属性都是如此。
然而,关于checked
属性要记住的最重要的概念是它不对应于checked
属性。该属性实际上对应于defaultChecked
属性,应该只用于设置复选框的initial
值。 checked
属性值不会随复选框的状态而变化,而 checked
属性会。因此,cross-browser-compatible 确定是否选中复选框的方法是使用属性:
-
if ( elem.checked )
-
if ( $( elem ).prop( "checked" ) )
-
if ( $( elem ).is( ":checked" ) )
其他动态属性也是如此,例如 selected
和 value
。
其他注意事项:
- 在版本 9 之前的 Internet Explorer 中,使用
.prop()
将 DOM 元素属性设置为简单原始值(数字、字符串或布尔值)以外的任何值,如果不删除该属性(使用.removeProp()
.data()
例子:
在复选框更改时显示选中的属性和属性。
|
演示:
找到页面中第一个 <em> 的 title 属性。
|
演示:
用法二
.attr( attributeName, value ) => jQuery
.attr( attributeName, value ) => jQuery
说明:为一组匹配的元素设置一个或多个属性。
-
添加的版本:1.0
.attr( attributeName, value )
-
attributeName类型:String要设置的属性的名称。
-
value为属性设置的值。如果
null
,指定的属性将被删除(如.removeAttr()
-
-
添加的版本:1.0
.attr( attributes )
-
attributes类型:PlainObject要设置的attribute-value 对的对象。
-
-
添加的版本:1.1
.attr( attributeName, function )
-
attributeName类型:String要设置的属性的名称。
-
function返回要设置的值的函数。
this
是当前元素。接收集合中元素的索引位置和旧属性值作为参数。
-
.attr()
方法是设置属性值的便捷方法,尤其是在设置多个属性或使用函数返回的值时。考虑下图:
|
设置一个简单的属性
要更改 alt
属性,只需将属性名称及其新值传递给 .attr()
方法:
|
Add
一个属性同理:
|
一次设置多个属性
要同时更改alt
属性并添加title
属性,请使用纯JavaScript 对象一次将两组名称和值传递给方法。对象中的每个键值对添加或修改一个属性:
|
设置多个属性时,属性名称周围的引号是可选的。
警告:设置'class' 属性时,必须始终使用引号!
注意:试图改变type
一个属性input
或者button
通过创建的元素document.createElement()
将在 Internet Explorer 8 或更早版本上引发异常。
计算的属性值
通过使用函数设置属性,您可以根据元素的其他属性计算值。例如,要将新值与现有值连接:
|
当一次修改多个元素的属性时,使用函数计算属性值特别有用。
注意:如果在 setter 函数中没有返回任何内容(即。function(index, attr){}
), 或者如果undefined
返回时,当前值不变。这对于仅在满足某些条件时有选择地设置值很有用。
例子:
为页面中的所有 <img> 设置一些属性。
|
演示:
根据页面中的位置设置 div 的 id。
|
演示:
从图像上的标题属性设置 src 属性。
|
演示:
相关用法
- JQuery .add()用法及代码示例
- JQuery UI .addClass()用法及代码示例
- JQuery .addClass()用法及代码示例
- JQuery .addBack()用法及代码示例
- JQuery .ajaxSend()用法及代码示例
- JQuery .ajaxStop()用法及代码示例
- JQuery .ajaxComplete()用法及代码示例
- JQuery .animate()用法及代码示例
- JQuery .after()用法及代码示例
- JQuery .ajaxSuccess()用法及代码示例
- JQuery .ajaxError()用法及代码示例
- JQuery .append()用法及代码示例
- JQuery .appendTo()用法及代码示例
- JQuery .ajaxStart()用法及代码示例
- JQuery .jquery用法及代码示例
- JQuery .scroll()用法及代码示例
- JQuery .contextmenu()用法及代码示例
- JQuery .undelegate()用法及代码示例
- JQuery .load()用法及代码示例
- JQuery .contents()用法及代码示例
- JQuery .empty()用法及代码示例
- JQuery UI .labels()用法及代码示例
- JQuery .click()用法及代码示例
- JQuery UI .toggleClass()用法及代码示例
- JQuery .removeAttr()用法及代码示例
注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .attr()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。