2011-10-01 5 views
0

J'ai des problèmes avec le live de jQuery. Le div one doit être déplacé lorsque le div comment du même conteneur div est cliqué. Ce qui se passe est que chaque div one glisse vers le bas indépendamment de leurs conteneurs. Comment puis-je réparer ça? Je pense que c'est la fonction $ $ mais je ne sais pas comment l'implémenter.

<script type="text/javascript"> 
    $('.one').hide();  
    $('.comment').live('click',function() { 
    if ($('.one').is(':hidden')) { 
     $('.one').slideDown('slow'); 
    } 
    }); 
</script> 

<?php 
    for($i=0;$i<11;$i++) { 
?> 
<div class='container'> 
    <a class='comment'>comment</a> 
    <div class='one'> 
     <textarea style='width:350px;height:100px'>Type text here</textarea> 
    </div> 
    </div> 
<?php 
    } 
?> 
+0

'$ ('un.')' Sélectionne chaque élément avec la classe 'One', de sorte que était à prévoir. –

Répondre

2

Dans ce cas (à partir d'informations fourni) .live() est non nécessaire, vous pouvez simplement utiliser .click().

Le corps de votre fonction peut ressembler à ceci ...

$one = $(this).next('.one'); //select the specific .one div you want 
if ($one.is(':hidden')) { 
    $one.slideDown('slow'); 
} 

Vous souhaitez cibler uniquement le .one spécifique div que vous voulez montrer ... où vous êtes actuellement le ciblage chaque.one div .

0

Essayez:

$('.comment').live('click',function() { 
     $(this).siblings('.one').slideDown('slow'); 
    }); 
0
<script type="text/javascript"> 
    $('.one').hide();  
    $('.comment').live('click',function() { 
    var sameone = $(this).next('.one'); 
      if (sameone.is(':hidden')) { 
      sameone.slideDown('slow'); 
      } 
     }); 
</script> 
1

Il suffit d'utiliser next()

$('.one').hide();  
    $('.comment').live('click',function() { 
     if ($(this).next('.one').is(':hidden')) { 
      $(this).next('.one').slideDown('slow'); 
     } 
}); 

jsFiddle