2008-12-11 8 views
14

Ich habe eine Liste von Links, die ein Klick-Ereignis an sie gebunden haben, muss ich die ID aus dem Kind A-Link erhalten. Im Beispiel unten, wenn ich auf das erste Listenelement geklickt hätte, müsste ich Google neu abgestimmt haben.jQuery Kind von angeklickt Element

Ich habe versucht '$this a'10 aber kann nicht ganz die Syntax erarbeiten.

jQuery: 

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



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

Antwort

40

ich aber

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

täte es nicht die HTML-Beispiel sehen (fix ein: erste Wähler, wenn es nicht das, was Sie gemeint) zu

diese beziehen das Element, das Ihr Ereignis ausgelöst hat

+0

Ich war nur blind :) – smoothdeveloper

+0

Danke nett :) – Tom

+0

Yep, das ist definitiv es. –

1

Sie könnten die children Methode verwenden:

Ich bin mir nicht sicher über die Syntax, aber so etwas sollte funktionieren.

+0

Verwendung des Array-Indexer gibt Ihnen ein Dom-Objekt zurück daher die .attr-Methode wäre nicht vorhanden und Fehler. Du brauchst $ (this) .children ('a') [0] .id oder $ (this) .children ('a'). Get (0) .id oder $ (this) .children ('a'). attr ('id'); – redsquare

+0

Sind Sie sicher, dass ein DOM-Objekt zurückgegeben wird? Wie auch immer, ich sagte, ich sei mir nicht sicher, ich werde es irgendwann testen und es korrigieren, wenn es falsch ist. – mbillard

+0

Ich habe es mit '.eq (int)' behoben, das das jQuery-Element am angegebenen Index zurückgibt. – mbillard

4

Um Ihren Code ein wenig übersichtlicher zu machen, können mit Funktionen wie so binden Trigger: (Ich schlage vor, Sie geben Ihre UL eine Kennung, so es spezifisch nur Elemente innerhalb dieser UL)

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

Die Funktion Das heißt (getAnchorId) ruft das ID-Attribut des untergeordneten Elements (a) des angeklickten Elements (ul li) ab und wendet es auf eine Variable an (anchorId), und um anzuzeigen, dass es die richtigen Informationen erhält, stelle ich das Ergebnis in eine Warnung .

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

Jetzt kann u tun, was immer wünschen u mit diesen Variablen :)

hoffte, das hilft :)

+0

Das ist sehr subjektiv, ich persönlich bevorzuge eine anonyme Funktion, vor allem, weil dies so spezifisch ist. –

+0

vereinbart, und die Verwendung von Bind ist nur zusätzliche Tasten drücken Sie anstelle von .click. – redsquare