2012-03-23 19 views
0

Angenommen ich diese HTML-Struktur haben:Zugriff auf untergeordnete Element mit jQuery

<ul class='menu'> 
    <li> 
     <div></div> 
     <div> 
      <div></div> 
      <div> 
      <a href="#">Text</a> 
      </div> 
     </div> 
    </li> 
</ul> 

Wie würde ich, mit jQuery, über den Zugriff auf "Text" gehen? Ich weiß, dass ich etwas wie $ ('a'). Text() verwenden muss, aber mein Aufhängen liegt darin, dass ich nicht weiß, wie ich auf dieses Niveau komme, wenn ich nur die Klasse des UL an der Spitze kenne. Ich habe versucht, Variationen von .children() zu verwenden, aber ich bin mir nicht ganz sicher, wie ich bis hierhin gehen soll.

Bitte gehen Sie davon aus, dass ich das ursprüngliche HTML-Markup nicht ändern kann.

Vielen Dank im Voraus.

+0

Ist das der einzige Anker in 'ul.menu'? Dann einfach '$ (" ul.menu a ")'. – Jon

+0

'$ ('ul.menu a')', '$ ('ul'). Find ('a')'. –

+0

Definieren Sie, welche Elemente Sie abgleichen möchten. Sind es nur Anker innerhalb von 'ul.menu'? –

Antwort

3

sollte dies es

$('.menu a').text(); 

bearbeiten behandeln: Code für editierte Frage ist

hier sind, wie in .menu

$('.menu a').each(function(){ 

    alert( $(this).text()); 
}); 
+0

Duh, danke. Mir ist es gelungen, alleine durchzuziehen - etwas, das ich schon einige Male gemacht habe. Hier ist bis 16.30 Uhr am Freitag Nachmittag ... –

+0

Ich habe meine Antwort aktualisiert –

0

Sie auch den Anker durch alle Links zu Schleife geben könnte Kennzeichnen Sie eine bestimmte Klasse oder ID und verwenden Sie dann diese Klasse oder ID, um sie auszuwählen.

HTML

<a class="menu-link" href="#">Text</a> 
<a href="#">Text</a> 

jQuery

$('.menu-link').text(); 

Der Vorteil einer einzigartigen Klasse als Selektor ist, dass, wenn Sie unter dem Menü andere Anker-Tags haben, werden Sie nur diejenigen betreffen, die haben die gegebene Klasse.

Der andere Link ohne Klasse ist nicht betroffen. Hier

1

ist ein Beispiel, das auch funktionieren würde, wenn es mehr Links in den anderen divs sind:

$('.menu li div:eq(1) div:eq(1) a').text(); 

Demo: http://jsfiddle.net/utJsu/

0

Da Sie mehrere haben innerhalb von .menu Sie jede

verwenden können
$('.menu a').each(function(){$(this).text(); // gives you the text of each a}); 
Verwandte Themen