2015-10-08 7 views
6

Ich habe Links wie so ein:

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

Ich möchte die href s erhalten dass die <a> Tags enthalten. Ich habe versucht, durch jeden Link zu durchlaufen wie so:

Javascript/jQuery:

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

Wenn ich das versuche, erhalte ich die Fehler TypeError: $(...)[x].attr is not a function. Was ist das Problem? Vielen Dank.

Antwort

11

Sie müssen hier eq() verwenden, da $(".some-link")[x] kehrt dom Objekt attr() Methode nur mit jQuery-Objekt verwenden können. Also nee Sie eq(x) oder :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">

zu verwenden oder können Sie each() Methode verwenden, anstatt

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

oder mehrere einfache Weise attr() mit Rückruf verwenden

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

Das [1] Indexer (entsprechen .get()) kein jQuery Element zurück, aber ein DOM-Element. Versuchen

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

Als Seite beachten, werden Sie wahrscheinlich Ihre Variable var deklarieren möchten.