2011-01-19 22 views
22

si tengo el siguiente marcado:Obtener atributo del elemento hijo

<p class="header hours"> 
    <a href="javascript:void(0)" class="sort" sortcat="hours"> 
     Hours&nbsp;<span class="imgholder" sortcat="hours">&nbsp;</span> 
    </a> 
</p> 

¿Cómo se orienta la etiqueta <span> dentro de la etiqueta de anclaje? Hay otros cinco entradas <p> etiquetas similares, cada uno con un valor diferente para sortcat=

+0

qué quiere hacer algo con el lapso niño cuando se hace clic en el enlace o ...? – mkoryak

+1

@Pruitlgoe 'href =" javascript: void (0) "' Pensé que estábamos de acuerdo en que no usas esta abominación ':)' –

+1

@Pruitlgoe Además, es posible que prefieras esos atributos personalizados con 'data-'. jQuery tiene un gran soporte para los atributos HTML5 'data- *' a través de su método 'data()'. –

Respuesta

44
$(".sort").click(function(){ 
    var cat = $(this).children("span").attr("sortcat"); 
    //do something with the sortcat 
}); 
+0

Excelente, esto funcionó exactamente como lo necesitaba. Estaba arruinando la llamada $ (this) .children escribiendo $ (this) .children.attr ("sortcat") ... especificidad estúpida ...: D – PruitIgoe

+0

no hay problema, por cierto, nunca mencionaste 'hacer clic 'cualquier cosa en su pregunta, por eso tiene tantas respuestas no sobre hacer clic en – mkoryak

+0

nada esto no funciona para mí. Me vuelvo indefinido –

0

buscar() encuentra elementos dentro de un elemento dado.

$('a.sort').find('span');

9
$("a span[sortcat]").attr('sortcat') 

que usted va a poner en valor del primer elemento sortcat. Para llegar a todos ellos, hacer esto:

$("a span[sortcat]").map(function(){ return $(this).attr('sortcat') }) 

Ver esta demostración de trabajo: http://jsfiddle.net/BwgDW/

+0

¿Qué sucede si quiero obtener uno específico, en cuál etiqueta de ancla se hizo clic? – PruitIgoe

1

Hay un par de maneras en que puede hacer referencia a la etiqueta span, pero todos ellos terminan con ".attr ('sortcat '); "Supongo que depende de lo específico que desee ser y de la flexibilidad que necesita tener si hay algunas otras etiquetas p con etiquetas de anclaje y tramos dentro.

$('p.header a.sort span.imgholder').attr('sortcat'); 

/* or */ 

$('span.imgholder').attr('sortcat'); 

Puede seleccionar elementos en base a su etiqueta con su nombre, su nombre de la clase, o por los atributos dentro de las etiquetas. Consulte la documentación de jQuery en selectores:

http://api.jquery.com/category/selectors/basic-css-selectors/

http://api.jquery.com/category/selectors/

+0

Necesito que se haga clic en la etiqueta span dentro del delimitador específico - Intenté ver si podía llegar usando $ (esto), funcionó hasta cierto punto, puedo usar $ (this) .parent para subir al árbol pero tuve sin suerte bajando. – PruitIgoe

Cuestiones relacionadas