2008-12-11 12 views
14

J'ai une liste de liens auxquels un événement click est attaché, j'ai besoin d'obtenir l'ID du lien enfant. Donc, dans l'exemple ci-dessous, si je cliquais sur le premier élément de la liste, il faudrait que google le renvoie.jQuery enfant de l'élément cliqué

J'ai essayé '$this a' mais je n'arrive pas à établir la syntaxe.

jQuery: 

$("ul li").click(function(event){ 
$("input").val($(this).html());   
    } 
); 



html: 
<ul> 
    <li><a href="http://www.google.com" id="google">Google</a> 
</ul> 

Répondre

40

Je ne vois pas l'échantillon HTML, mais

$(this).find('a:first').attr('id') 

le ferais (fixer un: premier sélecteur si ce n'est pas ce que vous vouliez dire)

cette se réfèrent à l'élément qui a déclenché votre événement

+0

J'étais aveugle :) – smoothdeveloper

+0

merci beaucoup :) – Tom

+0

Eh oui, c'est vraiment il. –

1

Vous pouvez utiliser la méthode children:Je ne suis pas sûr de la syntaxe, mais quelque chose comme ça devrait fonctionner.

+0

en utilisant l'indexeur de tableau vous donne un objet dom retour donc la méthode .attr n'existerait pas et erreur. U a besoin de $ (this) .children ('a') [0] .id ou $ (this) .children ('a'). Get (0) .id ou $ (this) .children ('a'). attr ('id'); – redsquare

+0

Etes-vous sûr qu'il renvoie un objet DOM? De toute façon, j'ai dit que je n'étais pas sûr, je vais le tester un jour et le corriger si c'est faux. – mbillard

+0

Je l'ai corrigé en utilisant '.eq (int)' qui retourne l'élément jQuery à l'index spécifié. – mbillard

4

Pour rendre votre code un peu plus propre, permet de lier déclenche avec des fonctions comme si: (je vous suggère de donner votre UL un code d'identification est spécifique aux seuls éléments au sein de cette UL)

$('ul li').bind('click', getAnchorId); 

La fonction qui s'appelle (getAnchorId) obtient l'attribut ID de l'élément children (a) de l'élément cliqué (ul li) et l'applique à une variable (anchorId), et pour montrer qu'il obtient les informations correctes je mets le résultat dans une alerte .

function getAnchorId() { 
    var anchorId = $(this).children('a').attr('id'); 
    alert(anchorId); 
} 

maintenant u peut faire ce que u souhaitent avec cette variable :)

espérons que cette aide :)

+0

C'est très subjectif, je préfère personnellement utiliser une fonction anonyme, d'autant plus que c'est très spécifique. –

+0

accepté, et l'utilisation de bind est juste un effort de pression de touche supplémentaire au lieu d'utiliser .click. – redsquare

Questions connexes