2010-05-25 2 views
7

Ich versuche im Prinzip genau das zu tun, was das Thema vorschlägt, aber ich werde in meinem Alarm "undefiniert" und ich bin mir nicht ganz sicher warum. Ich bin ziemlich neu in jQuery, also habe ich wahrscheinlich die Syntax falsch, aber nicht sicher, wo ich von hier aus gehen soll. Ich werde meine beiden Versuche veröffentlichen, die sowohl Ausbeute „undefiniert“ in der Warnung ...Erhalte eine ID des Kindelements und speichere sie in einer Variablen mit jquery?

//In my first attempt, I'm trying to get the id of the inner a tag 
<ul> 
       <li id="l1" class="active"><a href="#c1">Samp 1</a></li> 
       <li id="l2" class=""><a href="#c2">Samp 2</a></li> 
       <li id="l3" class=""><a href="#c3">Samp 3</a></li> 
     </ul> 

var selected = $(".active).children("a").attr("id"); 
    alert(selected); 

//In my second attempt, I'm trying to get the id of the currently selected li 
    var selected = $(".active").attr("id"); 
    alert(selected); 

Antwort

12
$(".active").children("a").attr("id"); 

Ihre <a> Elemente haben eine id nicht nur ein href. Und die Verwendung eines Selektors anstelle der Kinderfunktion kann Ihren Code leichter lesbar machen.

Meinst du $(".active > a").attr("href")?


$(".active").attr("id"); 

jQuery kehrt das id Attribut des ersten Elements in der Sammlung jQuery. Haben Sie ein anderes Element mit der Klasse active?

Ich schlage vor, Sie versuchen, $("ul > li.active").attr("id")

0

Das Problem mit den Ankern scheint zu sein, dass keiner der Anker Sie die Auswahl einer ID tatsächlich haben. Meinst du .attr("href") durch Zufall?

1

Im ersten Versuch, du bist die <a> im <li> bekommen ..., die keine ID hat, brauchen Sie nur das:

var selected = $(".active").attr("id"); 
alert(selected); 

Also Ihr zweiter Versuch richtig ist, you can see it in action here.

Wenn Sie eigentlich die id aus dem <a> Element wollten, dann müssen Sie ihnen IDs geben und Ihr erster Versuch wird funktionieren, you can see it here.

-1

Sie erhalten das falsche Attribut (oder Sie haben ein falsches Markup). Es gibt kein "ID" -Attribut in Ihren a-Tags. Sie haben „href“ Attribute, also, wenn Sie versuchen, den Wert von „href“ Geth sollten Sie verwenden:

var selected = $(".active).children("a").attr("href"); 
    alert(selected); 

Andernfalls, wenn Sie die Eltern-ID erhalten müssen Sie verwenden sollten:

var selected = $(".active).attr("id"); 
    alert(selected); 
+0

Sie verpassen doppelte Anführungszeichen. –

Verwandte Themen