2008-12-11 12 views
14

Tengo una lista de enlaces que tienen un evento de clic adjunto, necesito obtener el ID del enlace A del niño. Por lo tanto, en el ejemplo siguiente, si hago clic en el primer elemento de la lista, necesito que Google vuelva a ingresar.jQuery hijo del elemento cliquete

He intentado '$this a' pero no puedo resolver la sintaxis.

jQuery: 

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



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

Respuesta

40

no veo el código HTML muestra pero

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

lo haría (fijar un: primer selector si no es lo que quería decir)

este se refieren a el elemento que disparó su evento

+0

yo era ciego :) – smoothdeveloper

+0

Gracias amablemente :) – Tom

+0

Sí, esto es, sin duda eso. –

1

Puede usar el método children:

$(this).children('a').eq(0).attr('id'); 

No estoy seguro acerca de la sintaxis, pero algo como esto debería funcionar.

+0

usando el indexador de matriz le da un objeto dom atrás por lo tanto, el método .attr no existiría y el error. U necesita $ (this) .children ('a') [0] .id o $ (this) .children ('a'). Get (0) .id o $ (this) .children ('a'). attr ('id'); – redsquare

+0

¿Estás seguro de que devuelve un objeto DOM? De cualquier manera, le dije que no estaba seguro, lo probaré en algún momento y lo corregirá si está mal. – mbillard

+0

Lo arreglé usando '.eq (int)' que devuelve el elemento jQuery en el índice especificado. – mbillard

4

Para que el código quede un poco más ordenado, permite unen dispara con funciones como modo: (sugiero le da a su UL una identificación por lo que es específico de los elementos sólo dentro de ese UL)

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

La función eso se llama (getAnchorId) obtiene el atributo ID del elemento secundario (a) del elemento cliqueado (ul li) y lo aplica a una variable (anchorId), y para mostrar que obtiene la información correcta puse el resultado en una alerta .

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

Ahora u puede hacer lo que deseo de u con esa variable :)

esperanza de que esto ayude :)

+0

Eso es muy subjetivo, personalmente prefiero usar una función anónima, especialmente porque esto es muy específico. –

+0

estuvo de acuerdo, y usar bind es solo un esfuerzo adicional de pulsación de tecla en lugar de usar .click. – redsquare

Cuestiones relacionadas