2010-10-04 19 views
17

Siento que tengo que usar demasiados .children() en algunas de mis funciones de jQuery.jQuery: pero ¿y todos los niños?

alt text

Aquí es mi HTML:

<div class="goal-small-container"> 
    <div class="goal-content"> 
    <div class="goal-row"> 
     <span class="goal-actions"> 

Y aquí es mi jQuery:

$('.goal-small-container').hover(function() { 
    $(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"}); 
}, function() { 
    $(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "hidden"}); 
}); 

¿Hay una mejor manera? Dime por los niños.

+15

Por amor de Dios, se puso una camisa! ¡Hay niños presentes! : o) – user113716

+0

¡Oh, Dios mío! Estoy * sonrojado *. –

+0

wow, busy night para desbordamiento de pila. 235 visitas en 11 minutos. –

Respuesta

27
.find('.goal-content .goal-row .goal-action').whatever() 

o más simplemente:

.find('.goal-action').whatever() 
+0

Esto no es lo que esperaba. –

+13

@rockinthesixstring - party pooper –

+0

lol odio respuestas con imágenes no relacionadas ... Estoy tan tentado de votar abajo ...;) – Reigel

14

¿Oyes hablar de .find()?

$('.goal-small-container').hover(function() { 
    $(this).find('.goal-actions').css({visibility: "visible"}); 
}, function() { 
    $(this).find('.goal-actions').css({visibility: "hidden"}); 
}); 
+2

¡No lo había hecho! Eso es * exactamente * lo que estaba buscando. También aprecio lo que creo que fue una edición. –

+0

^_^Fui el primero en responder, lamentablemente obtuvieron una mayor votación. ;) – Reigel

+0

Agradecí que fueras el primero en responder, pero ver '.find()' usado con la cadena de clases heredadas y la clase única también fue útil para alguien que no estaba familiarizado. –

9

En lugar de

$(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"}); 

Se puede utilizar:

$(this).find('> .goal-content > .goal-row > .goal-actions').css({visibility: "visible"}); 

para exactamente el mismo significado. Sin embargo, si no hay ninguna posibilidad de que sea ambiguo, (.goal-actions solo aparecerá en esa estructura del marcado) simplemente puede usar find('.goal-actions').

0

¿Por qué no sólo tiene que utilizar .show() y .hide() en el segundo <div>? E, inicialmente, haz que se muestren ocultos o algo así.

+0

'.show()' y '.hide()' han sido probados y * no * tienen el efecto deseado. –

1

sólo puede utilizar:

$('.goal-small-container').hover(function() { 
    $(this).find('goal-actions').show(); 
}, function() { 
    $(this).find('goal-actions').hide(); 
}); 
+0

jaja, me ganaste con eso. –

+0

Dang. En el tiempo que me tomó escribir esto en mi iPhone, ¡llegaron tantas otras respuestas! – mkoistinen

+0

La programación en el iPhone es una experiencia dolorosa, IMO. – alex

Cuestiones relacionadas