代码之家  ›  专栏  ›  技术社区  ›  Dónal

延迟jquery效果

  •  47
  • Dónal  · 技术社区  · 16 年前

    我想在延迟几秒钟后淡出一个元素及其所有子元素。但是我还没有找到一种方法来指定一个效果应该在指定的时间延迟之后开始。

    6 回复  |  直到 13 年前
        1
  •  77
  •   Jason Bunting    16 年前
    setTimeout(function() { $('#foo').fadeOut(); }, 5000);
    

    5000是以毫秒为单位的5秒。

        2
  •  43
  •   Simon_Weaver    14 年前

    我用我刚写的这个暂停插件

    $.fn.pause = function(duration) {
        $(this).animate({ dummy: 1 }, duration);
        return this;
    };
    

    这样称呼它:

    $("#mainImage").pause(5000).fadeOut();
    

    注意:您不需要回拨。


    编辑:现在应该使用 jQuery 1.4. built in delay() 方法。我还没有检查,但我认为它比我的插件更聪明。

        3
  •  19
  •   Yi Jiang G-Man    13 年前

    以前你会这样做的

    $('#foo').animate({opacity: 1},1000).fadeOut('slow');
    

    第一个动画不做任何事情,因为元素上已经有了不透明度1,但它会暂停一段时间。

    在jquery 1.4中,他们已经将其构建到框架中,因此您不必像上面那样使用黑客。

    $('#foo').delay(1000).fadeOut('slow');
    

    功能与原版相同 jQuery.delay() 插件 http://www.evanbot.com/article/jquery-delay-plugin/4

        4
  •  11
  •   user263865    14 年前

    最好的方法是使用jquery delay方法:

    $('我的_id')。延迟(2000年)。淡出(2000年);

        5
  •  1
  •   Sampson    15 年前

    您可以使用fadeto()方法避免使用setTimeout,并为此设置5秒延迟。

    $("#hideAfterFiveSeconds").click(function(){
      $(this).fadeTo(5000,1,function(){
        $(this).fadeOut("slow");
      });
    });
    
        6
  •  1
  •   chelfers    15 年前

    我已经写了一个插件,让你添加一个延迟链。

    例如$('div').fade out().delay(5000).fade in();//淡出元素,等待5秒钟,淡入元素。

    它不使用任何动画黑客或过多的回调链接,只是简单的干净的短代码。

    http://blindsignals.com/index.php/2009/07/jquery-delay/