回调内部回调

时间:2013-04-29 22:37:13

标签: jquery html callback fadein jquery-callback

我正在尝试在完成后重新执行另一个回调。但出于某种原因,它一下子就完成了这些工作。

以下是代码:

$('video#videopromo').bind('ended',function()
{                  
    $("#hero").fadeIn("slow", function()
    {
        $(this).css("visibility", "visible");
        $("#videopromo").css({zIndex: -1});
        $(this).css("display", "block");

    });
});

我希望#hero能够淡入,因为它反对立即显示这是最好的方法吗?

3 个答案:

答案 0 :(得分:0)

尝试查看.when.done

http://api.jquery.com/jQuery.when/ http://api.jquery.com/deferred.done/

这将允许您等到某事完成后再开始其他事情。

答案 1 :(得分:0)

我把你的代码放到jsFiddle中,它对我有用。虽然我怀疑您在CSS中使用了visibility:hidden,但我使用了display:none。我已经注释掉了(这个)的css()代码,因为我觉得你不需要它,我稍微重构了一下,但它的工作原理非常好;

#hero {    display:none; }

这里有一些有效的代码(但是你的代码与上面的CSS一样工作);

$(document).ready(function(){
  $("#videopromo").bind('click',function(e){  
        var videopromo = $(e.target);
        console.log(e.target);
        $("#hero").fadeIn("slow", function(){
              console.log("callback");
              //$(this).css({visibility:"visible",display:"block"});
              videopromo.css({zIndex: -1});
        });
    });
});

fiddle

(点击'视频'进行测试)

这是另一个fiddle使用visibility:hidden也是如此。

$(document).ready(function(){

  $("#videopromo").bind('click',function(e){  
        var videopromo = $(e.target);
        console.log(e.target);
      $("#hero").css({visibility:"visible"})
                .hide()
                .fadeIn( 500, function(){
                      console.log("fully faded in now");
                      videopromo.css({zIndex: -1});
                });
      });

});

答案 2 :(得分:0)

我通过扩展@cirrus所说的解决了这个问题而不是隐藏元素我给视频一个$(“#videopromo”)。css(“position”,“relative”);在节目中,所以内容不会在视频后面。一旦完成它就会恢复!

由于

全部为您提供帮助