3

我有一个切换淡入淡出效果,但是当您多次单击该按钮时,它会多次淡入和淡出。(因此,如果我快速单击淡入淡出 id 20 次,它将淡入和淡出多次)我将如何停止此操作并使其只能在动画完成时切换淡入淡出?我尝试获取当前值并进行 if 语句,但它不起作用:*(

谢谢

jQuery.fn.fadeToggle = function(speed, easing, callback) {
  return this.animate({opacity: 'toggle'}, speed, easing, callback);  
};



$(document).ready(function() {
  $('.open').click(function() {
    $('#fadeMe').next().fadeToggle('slow');
  });
});
4

2 回答 2

6

您需要检查元素是否不是:动画,如果是,则调用 .animate:

  <body>
    <button class="open">open</button><br>
    <div id="fadeMe">fade me!</div>
    <style>#fadeMe { 
    width:20em;
    height:10em;
    background:black;
    color:#fff;
    }</style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script>
    jQuery.fn.fadeToggle = function(speed, easing, callback) {
      return this.animate({opacity: 'toggle'}, speed, easing, callback);  
    };



    $(document).ready(function() {
      $('.open').click(function() {
        var el = $('#fadeMe').next();
        if ( !el.is(':animated') ) {
            $(el).fadeToggle('slow');
        }
      });
    });
    </script>
    </body>

演示:http: //jsbin.com/irare

于 2009-10-06T00:46:01.373 回答
3

使用.stop(). 这会停止元素上的所有动画。

$('#fadeMe').next().stop().fadeToggle('slow');
于 2009-10-06T01:16:02.157 回答