2010-05-08 6 views
0

Hey, j'ai une liste d'utiliser ul et li:jQuery | Cliquez sur l'enfant, se cache parent

<span class="important">Show/Hide</span> 

<div id="important" class="hidden"> 
    <ul class="sub"> 
    <li> 
      Value one 
     </li> 
     <li class="child"> 
      <img src="../img/close.png" /> 
     </li> 
    </ul> 
</div> 

$(".important").click(function() { 
    $("#important").slideToggle("fast"); 
}); 

Lorsque l'enfant (class = "enfant") est cliqué, il doit glisser le div (id = » important »), cependant, il existe d'autres listes qui ont des ID différents, je veux que le div glisser vers le haut lorsque l'enfant est cliqué

Je l'ai fait:

$(".child").click(function() { 
    $(".child < div").slideUp("fast"); 
}); 

Je ne sais pas comment faire travail, j'ai fait d'autres combinaisons, ne peut pas sembler le faire.

Répondre

3

Vous pouvez le faire en utilisant .closest(), comme celui-ci

$(".child").click(function() { 
    $(this).closest("div").slideUp(); 
}); 

Cela va de la .child vous avez cliqué sur le <div> ancêtre du neatest et il glisse vers le haut. Si vous pouvez avoir d'autres divs entre l'enfant et le parent, alors je suggère de donner la <div> vous faire défaut fermé une classe, et en changeant le plus proche appel à la recherche de ce <div> spécifique, comme ceci:

$(".child").click(function() { 
    $(this).closest("div.classToClose").slideUp(); 
}); 
+0

Wow, merci pour cette méthode :) – Jamie

0

I pense que vous avez besoin du sélecteur ": parent", dans votre cas ce serait:

$ (". enfant: parent"). slideUp ("rapide");

Pour d'autres sélecteurs, s'il vous plaît jeter un oeil à: http://api.jquery.com/category/selectors/

1

j'utiliser la façon de faire qqch sélecteur parent(), c'est le meilleur (mon avis) comme ça :)