2009-01-16 7 views
1

J'ai plusieurs éléments imbriqués div comme ceci:jQuery: enfant tirant un événement pour son élément parent

<div class="main"> 
blah blah blah <div class="clickme">clickme</div> 
</div> 

<div class="main"> 
bleh bleh bleh <div class="clickme">clickme</div> 
</div> 

<div class="main"> 
blih blih blih <div class="clickme">clickme</div> 
</div> 

Je veux déclencher un événement de bascule qui montrera/cacher la div a marqué avec la classe « principale » en cliquant sur le texte "clickme" correspondant à l'intérieur de son tag div enfant avec la classe "clickme". Désolé, je n'arrive pas à comprendre comment faire ça. Merci.

Répondre

10
$(".clickme").click(function() { 
    $(this).parent("div.main").toggle(); 
}); 

En ce qui concerne votre deuxième problème, vous devez ajouter:

$(this).unbind('click'); 

A la fin de l'une de vos fonctions à bascule, et il fonctionnera comme vous le souhaitez. Bonne chance.

EDIT: en réponse à votre dernier problème, cela devrait le faire:

$(".abrefecha").click(function() { 
    var that = this; // save this in that :) 
    jQuery(this).parent().toggle(
     function() { 
      var itemId = jQuery(this).attr("id"); 
      var itemIndex = $(".showhide").index(this); 
      var currentItemHeight = b[itemIndex] + 30 + 'px' 
      jQuery(this).css("overflow","auto"); 
      jQuery(this).animate({ height: currentItemHeight } , 500); 
      $(that).html('close'); // change html inside pink to 'close' 
      $(this).unbind('click'); 
     }, 
     function() { 
      jQuery(this).css("overflow","hidden") 
      jQuery(this).animate({ height:"60px" } , 500); 
      $(that).html('abrefecha'); // change html back to 'abrefecha' 
      $(this).unbind('click'); 
     } 
    ); 
}); 
+0

Man, je ne peux pas vous dire combien je vous dois. Merci, merci, merci, tu as sauvé ma journée (encore!). Abraços. –

Questions connexes