2013-07-18 5 views
11

Ich möchte ein Ergebnis der Abfrage Selektor iterieren.Wie man ein Ergebnis von jquery Selektor iteriert

Html-Code

<nav id="navigation"> 
     <a href="#" tabindex="1" class="active_nav">nav1</a> 
     <a href="#" tabindex="2">nav2</a> 
     <a href="#"tabindex="3">nav3</a> 
</nav> 

wenn ich Javascript

alert($("#navigation >a")[0]); 

das Ergebnis ist der Tag a href Attribut Ich weiß nicht, warum.

+1

welche Ausgabe Sie wollen? –

+0

Sie können '.each' http://api.jquery.com/each/ –

+0

@bohan verwenden überprüfen Sie meine Antwort;) – EpokK

Antwort

14

Verwenden $.each

$("#navigation > a").each(function() { 

    console.log(this.href) 
}); 

$('#navigation > a')[0] 
    ^   ^---- Selects the 1st dom object from the jQuery object 
     |     that is nothing but the index of the element among 
     |     the list of elements 
     |------- Gives you children of nav(3 anchor tags in this case) which is a 
       jQuery object that contains the list of matched elements 
+0

warum die $ ("# navigation> a") [0]; 'die href zurückgibt Attribut des ersten Tags nicht das erste dom Objekt – bohan

0

Versuchen

console.log($("#navigation >a")) 

stattdessen verwenden, so dass Sie alle Ergebnisse in der Konsole sehen (cmd + alt + i in Chrom)

1

In jQuery, wenn Sie verwenden Index wie [0], bedeutet dies, dass Sie auf das DOM-Element zugreifen. Deshalb

$("#navigation >a")[0] 

gibt <a> zurück. each() für diese Iteration wie folgt

Um ein jQuery-Selektor Ergebnis zu wiederholen, verwenden Sie jede

$("#navigation >a").each(function(index, elem){ 
}); 
1

können Sie jQuery in-built verwenden:

$("#navigation>a").each(function(index){ 
    console.log("I am " + index + "th element."); 
    //and you can access this element by $(this) 
}); 
1

Wenn Sie alle <a> iterieren wollen Tags können Sie jede Funktion verwenden

und wenn Sie wollen nur das erste <a> Tag dann verwenden .EQ()

alert($('#navigation >a').eq(0).attr('href'); 
+1

$ ("# navigation> a") [0] gibt das DOM-Element zurück. Verwenden Sie nicht alert(), um zu sehen, was zurückgegeben wird, da nur das Attribut href angezeigt wird. Versuchen Sie, inspect Element in Chrome zu verwenden oder Firebug für Firefox zu verwenden. –

3

Verwenden first() wie folgt erhalten:

var element = $("#navigation>a").first(); 
console.log(element); 

Reference

+0

aber ich möchte das ganze Set iterieren, nicht nur das erste. und ich möchte wissen, warum das '$ (" # navigation> a ") [0];' das href-Attribut des ersten Tags zurückgibt. – bohan

+1

Ihre Abfrage: "Ich möchte das erste DOM-Objekt, aber nicht das Attribut des ersten Objekts abrufen" – EpokK