2010-09-09 3 views
0

Mon html:jquery clic question

<div id="menu"><ul><li>menu one<ul> 
<li><a id="home">home</a></li> 
<li><a id="contact">contact us</a></li> 
</ul></li></ul></div> 

Jquery:

$('#menu').click(function(){ 
     alert($(this).find('a').attr('id')); 
    }); 

Je veux trouver la valeur d'un clic. mon code retourne vide.

+0

Que diriez-vous de lier l'événement à $ ('# menu a') et faites juste alerte ($ (this) .attr ('id'))? – Guttsy

Répondre

2
$('#menu a').click(function(){ 
    alert($(this).html()); 
}); 

Si vous voulez que l'identifiant, puis faire

$('#menu a').click(function(){ 
    alert($(this).attr('id')); 
}); 
0

Votre .Find ('a') renverra plusieurs éléments. Si vous voulez afficher chacune de leurs boucles de valeurs en utilisant .each(). D'autre faire quelque chose comme ceci: .Find ('a') [0] .attr ('id')

code Looping:.

xxx.find ('a') chacune (alerte ($ (this) .attr ('id'));)

0

Votre code fonctionne pour moi, il renvoie "home" à chaque fois car c'est le premier descendant a du div. Peut-être vous cherchez quelque chose de plus comme

$('#menu a').click(function(){ 
     alert($(this).attr('id')); 
    });​ 

Fiddlehttp://jsfiddle.net/rsbPt/

0

La raison pour laquelle cela ne fonctionnera pas est parce que $(this).find('a') retourne un tableau, vous devez donc itérer sur tous les points d'ancrage dans #menu pour obtenir leur id. Vous pouvez le faire avec la fonction .each():

$('#menu').click(function(){ 
    $(this).find('a').each(function(){ alert(this.id) }); 
}); 

vous donnera deux alert() pour le HTML que vous avez donné, chacun avec un autre id. Vous pouvez ensuite remplacer le alert() par la fonction que vous devez exécuter sur chacune des ancres.