jquery live()和$ this

时间:2011-10-01 17:51:53

标签: jquery

我遇到了jQuery的问题。当点击同一容器div的div one时,div comment应该滑动。发生的事情是每个div one都会向下滑动而不管它们的容器是什么。我该如何解决?我认为这是$ this函数,但我不知道如何实现它。

<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
  }
?>

4 个答案:

答案 0 :(得分:2)

在这种情况下(来自提供的信息).live()不是必需的,您可以使用.click()

你的功能主体看起来像这样......

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

您希望仅定位要展示的特定.one div ...目前您定位的目标每个 .one div。

答案 1 :(得分:1)

只需使用next()

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

jsFiddle

答案 2 :(得分:0)

尝试:

  $('.comment').live('click',function() {
      $(this).siblings('.one').slideDown('slow');
  });

答案 3 :(得分:0)

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