TypeError:$(...)[1] .attr不是函数

时间:2015-10-08 18:56:19

标签: javascript jquery

我设置的链接如下:

HTML:

<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">

我希望得到href标记包含的<a>个。我试图像这样迭代每个链接:

Javascript / jQuery:

for (x=0; x < 5; x++) {
  link = $(".some-link")[x].attr("href");
  console.log(link);
}

当我尝试这个时,我收到错误TypeError: $(...)[x].attr is not a function。问题是什么?感谢。

2 个答案:

答案 0 :(得分:14)

您需要在此处使用 eq() ,因为$(".some-link")[x]返回dom对象 attr() 方法只能与jQuery对象一起使用。所以你需要使用 eq(x) :eq()

&#13;
&#13;
for (x=0; x < 5; x++) {
   link = $(".some-link").eq(x).attr("href");
   console.log(link);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">
&#13;
&#13;
&#13;

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

&#13;
&#13;
$(".some-link").each(function(){
   var link=$(this).attr("href");
   console.log(link);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">
&#13;
&#13;
&#13;

或更简单的方法使用 attr() 进行回调

&#13;
&#13;
$(".some-link").attr("href",function(i,link){
   console.log(link);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">
&#13;
&#13;
&#13;

答案 1 :(得分:3)

[1]索引器(相当于.get())不返回jQuery元素,而是返回DOM元素。试试

var link = $(".some-link").eq(x).attr("href");

作为旁注,您可能希望使用var声明变量。