2015-10-08 30 views
6

ho legami creati in questo modo:

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

voglio ottenere i href s che i tag <a> contengono. Ho cercato di scorrere ogni link in questo modo:

JavaScript/jQuery:

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

Quando provo questo, ottengo l'errore TypeError: $(...)[x].attr is not a function. Qual è il problema? Grazie.

risposta

11

è necessario utilizzare eq() qui, dal momento che i rendimenti $(".some-link")[x] dom oggetto attr() metodo può utilizzare solo con oggetto jQuery. Così si nee utilizzare eq(x) o :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">

oppure è possibile utilizzare each() metodo invece

$(".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">

o modo più semplice utilizzare attr() con 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">

1

Il [1] indicizzatore (equivalente a .get()) non restituisce un elemento jQuery, ma un elemento DOM. Prova

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

Come nota a margine, probabilmente si desidera dichiarare la variabile utilizzando var.

Problemi correlati