TypeError:$(...)[1] .attr不是函数 [英] TypeError: $(...)[1].attr is not a function

查看:63
本文介绍了TypeError:$(...)[1] .attr不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我设置的链接如下:



HTML:

 < a href =www.example1.comclass =some-link> 
< a href =www.example2.comclass =some-link>
< a href =www.example3.comclass =some-link>
< a href =www.example4.comclass =some-link>

我想得到 href s < a> 标记包含。我尝试迭代每个链接,如下所示:



Javascript / jQuery:

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

当我尝试这个时,我收到错误 TypeError :$(...)[x] .attr不是函数。有什么问题?谢谢。

解决方案

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



< pre class =snippet-code-js lang-js prettyprint-override> for(x = 0; x< 5; x ++){link = $(。some-link)。eq (x)的.attr(的 href); console.log(link);}

 < script src =https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js>< / script>< a href =www.example1.comclass = some-link>< a href =www.example2.comclass =some-link>< a href =www.example3.comclass =some-link>< a href =www.example4.comclass =some-link>< a href =www.example4.comclass =some-link>  



或者您可以使用 每个() 方法



  $ (。some-link)。each(function(){var link = $(this).attr(href); console.log(link);}) 

 < script src =https://ajax.googleapis.com/ajax/libs/jqu ery / 1.11.1 / jquery.min.js>< / script>< a href =www.example1.comclass =some-link>< a href =www.example2。 comclass =some-link>< a href =www.example3.comclass =some-link>< a href =www.example4.comclass =some-link >< a href =www.example4.comclass =some-link>  



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



  $(。some-link)。attr(href, function(i,link){console.log(link);}) 

 < script src =https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js>< / script>< a href =www .example1.comclass =some-link>< a href =www.example2.comclass =some-link>< a href =www.example3。 comclass =some-link>< a href =www.example4.comclass =some-link>< a href =www.example4.comclass =some-link >  


I have links set up like so:

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">

I want to get the hrefs that the <a> tags contain. I tried to iterate through each link like so:

Javascript / jQuery:

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

When I try this, I get the error TypeError: $(...)[x].attr is not a function. What's the issue? Thanks.

解决方案

You need to use eq() here, since $(".some-link")[x] returns dom object attr() method can only use with jQuery object. So you nee to use eq(x) or :eq()

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

<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">

or you can use each() method instead

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

<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">

or more simple way use attr() with callback

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

<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">

这篇关于TypeError:$(...)[1] .attr不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆