2010-05-25 8 views
7

Je suis essentiellement essayer de faire exactement ce que le sujet suggère, mais je me fais « undefined » dans mon alerte, et je ne suis pas tout à fait sûr pourquoi. Je suis assez nouveau à jquery, donc, j'ai probablement la syntaxe erronée, mais je ne sais pas où aller à partir d'ici. Je posterai mes deux tentatives, tous deux rendement « non défini » dans l'alerte ...obtenir un ID de l'élément enfant et stocker dans une variable en utilisant 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); 

Répondre

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

Vos <a> éléments ne sont pas id, seule une href. Et l'utilisation d'un sélecteur au lieu de la fonction enfants peut rendre votre code plus facile à lire.

Voulez-vous dire $(".active > a").attr("href")?


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

jQuery renverra l'attribut id du premier élément de la collection jQuery. Avez-vous un autre élément avec la classe active?

Je vous suggère d'essayer $("ul > li.active").attr("id")

0

Le problème avec les points d'ancrage semble qu'aucun des points d'ancrage vous choisissez ont en fait une pièce d'identité. Voulez-vous dire .attr("href") par hasard?

1

Dans la première tentative, vous obtenez le <a> dans le <li> ... qui ne dispose pas d'une carte d'identité, il vous suffit ceci:

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

donc votre deuxième tentative est correcte, you can see it in action here.

Si vous avez réellement voulu dire pour obtenir le id de l'élément <a>, alors vous devez leur donner ID et votre première tentative fonctionnera, you can see it here.

-1

Vous obtenez le mauvais attribut (ou si vous avez un balisage erroné). Il n'y a pas d'attribut "id" dans vos tags. Vous avez « href » attributs, donc si vous essayez de Geth la valeur de « href » vous devez utiliser ceci:

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

Sinon, si vous avez besoin pour vous devez utiliser l'identifiant du parent:

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

Il vous manque des guillemets. –