attr(name|properties|key,value|fn)

1、定义和用法

attr() 方法设置或返回被选元素的属性值。

根据该方法不同的参数,其工作方式也有所差异。

1.1、 返回属性值

返回被选元素的属性值。

语法

$(selector).attr(attribute)
参数 详细解释
attribute 规定要获取其值的属性

1.2、设置属性/值

设置被选元素的属性和值。

语法

$(selector).attr(attribute,value)
参数 详细解释
attribute 规定要获取其值的属性
value 规定属性的值。

1.3、使用函数来设置属性/值

设置被选元素的属性和值。

语法

$(selector).attr(attribute,function(index,oldvalue))
参数 详细解释
attribute 规定要获取其值的属性
function(index,oldvalue) 规定返回属性值的函数。
该函数可接收并使用选择器的 index 值和当前属性值。

1.4、设置多个属性/值对

为被选元素设置一个以上的属性和值。

语法

$(selector).attr({attribute:value, attribute:value ...})
参数 详细解释
attribute:value 规定一个或多个属性/值对

2、错误示例

我有一个这样的案列:

<a href="www.extrastu.xin" class="extrastu">
<a href="www.extrastu.xin" class="extrastu"> 
<a href="www.extrastu.xin" class="extrastu">
<a href="www.extrastu.xin" class="extrastu">

我想得到标签包含的href <a>。我尝试遍历每个链接,如下所示:

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
var list = $(".extrastu");
for (i=0; i < list.length; i++) {
  link = $(".extrastu")[i].attr("href");
  console.log(link);
}

这个时候chrome控制台就会报错TypeError: $(".extrastu")[i].attr is not a function

解答:

方法1、

这个时候你需要在这里使用eq(),因为 $(".extrastu")[i]返回的是 dom对象attr()方法只能用于jQuery对象。所以你需要使用eq(x)或:eq()`

方法2、

或者您可以使用each()方法

$(".extrastu").each(function(){
   var link=$(this).attr("href");
   console.log(link);
})

方法3、

或更简单的方式attr()与回调使用

$(".extrastu").attr("href",function(i,link){
   console.log(link);
})

相关文章

jQuery 属性操作 - attr() 方法

TypeError: .attr is not a function


扫描二维码,在手机上阅读!