2009-08-21 40 views
7

Supongamos que el código HTML siguiente:¿Cómo puedo ocultar un elemento padre usando jquery?

<li class="fooli"> 
    <a class="foo" href="javascript:foo(this);">anchor</a> 
</li> 
<li class="fooli"> 
    <a class="foo" href="javascript:foo(this);">anchor</a> 
</li> 

y la siguiente Javascript (jQuery 1.3.2):

function foo(anchor) { 
    alert($(anchor).attr('href')); 
} 

Mi objetivo es ser capaz de ocultar la li que se hace clic en, pero no puede asignarles identificadores únicos. Por lo tanto, quiero hacerlo de forma posicional (es decir, identificar el ancla particular al que se hizo clic) por algo como $ (ancla) .parent(). Hide().

Sin embargo, la alerta anterior devuelve "indefinido", por lo que no es obvio para mí que incluso tengo el objeto jquery correcto.

¿Cómo averiguo qué objeto $ (anclaje) es? En particular, ¿cómo veo qué atributos tiene, qué clase tiene, qué elemento HTML es, etc.?

Respuesta

16

no se puede hacer esto:

$(function() { 
    $("a.foo").click(function() { 
    $(this).parent().hide(); 
    return false; 
    }); 
}); 

con:

<li class="fooli"><a class="foo" href="#">anchor</a></li> 
<li class="fooli"><a class="foo" href="#">anchor</a></li> 
+0

Por qué sí, puedo. ¡Buena idea! – dfrankow

7

$(...) en jQuery no es un solo elemento HTML; siempre es una lista de ellos.

Puede utilizar .get() para convertir a una lista regular de Javascript o, mejor, utilizar .each():

$(anchor).each(function() { alert(this) }); 

Esto le dará algo así como [object HTMLAElement]. Tendría que usar for/in para examinarlo por completo, pero .tagName y .innerHTML son probablemente lo suficientemente buenos como para saber dónde se encuentra.

También me gusta usar $(...).css('outline', '1px solid lime') para encontrar elementos. Los hace difíciles de perder y fáciles de identificar con Firebug.

Adición: Definitivamente estoy de acuerdo con la respuesta anterior sobre la separación de su Javascript de su HTML. No en línea JS.

+0

Gracias por responder la pregunta que hice. – dfrankow

Cuestiones relacionadas