2013-02-22 33 views
1

我想创建一个非常简单的菜单,div“测试”隐藏,当我点击一个div“trig”时,测试正在显示。然后当我再次点击trig时,测试就是隐藏。 这是第一次点击工作,然后当我再次点击触发动画播放2次,当我再次点击它播放3次,并一次又一次。jquery无尽的动画问题

我的代码是:

<div class="trig">trig</div> 
<div class="test">test</div> 

<script src="jquery.js"></script> 
<script> 
$(function() { 

$('.test').hide(); 

function bis() { 
    $('.trig').click(function() { 
     var trig = $(this); 
     var test = trig.next(); 
     test.show(300,function() { 
      trig.click(function(){ 
       test.hide(300, function() { bis(); }) 
      ;}); 
     ;}); 
    }); 
}; 

bis(); 

}); 
</script> 

回答

2

你的函数只工作一次,因为在这之后,如果你点击触发,首先$('.trig').click(function()被调用,显示你的测试,并在这之后,该调用show的回调中的trig.click(function()被调用,它会立即隐藏您的测试。

使用toggle()函数来切换元素。

$('.trig').click(function() { 
    var trig = $(this); 
    var test = trig.next(); 
    test.toggle(300); 
}); 

文档http://api.jquery.com/toggle/

小提琴http://jsfiddle.net/suEg4/

+0

非常感谢我不知道这个功能,你简化了我的生活! – 2013-02-22 09:49:01

+0

你为什么不教他钓鱼,而不是喂他?解释之前为什么重复。 – Archer 2013-02-22 09:51:42

+2

编辑我的回答 – bpoiss 2013-02-22 09:55:08

0

这是简单的事情...尝试像下面...这将工作...

小提琴例:http://jsfiddle.net/RYh7U/103/

$('.test').toggle(); 
$('.trig').click(function() { 
    $('.test').toggle("slow"); 
}); 
+0

谢谢!!对不起,我不知道切换 – 2013-02-22 09:51:51