在开始下一个之前完成jquery切换

问题描述 投票:0回答:3

下面的工作正常 - 但是一切似乎一下子发生 - 我希望第一个切换完成关闭然后继续打开下一个

$(".masinfo").click(function(){ 
var divToShow = "."+$(this).attr('href').replace('#', '');
if (!$(divToShow).hasClass("activeBlock")) {
    $(".activeBlock").slideToggle("slow"); 
    $("#content .blocks").removeClass("activeBlock"); // finish here

    $(divToShow).slideToggle("slow"); // then start this one?
    $(divToShow).addClass( "activeBlock" );

}else{
    $(".activeBlock").slideToggle("slow"); 
    $("#content .blocks").removeClass("activeBlock");
}
return false; 
});
jquery
3个回答
2
投票

您想使用可以作为第二个参数传递给slideToggle函数的complete函数。

所以你的代码看起来像这样:

$(".masinfo").click(function(){ 
var divToShow = "."+$(this).attr('href').replace('#', '');
if (!$(divToShow).hasClass("activeBlock")) {
    $(".activeBlock").slideToggle("slow", function(){
         $("#content .blocks").removeClass("activeBlock"); 

        $(divToShow).slideToggle("slow"); 
       $(divToShow).addClass( "activeBlock" );

   }); 

}else{
    $(".activeBlock").slideToggle("slow"); 
    $("#content .blocks").removeClass("activeBlock");
}
return false; 
});

1
投票

尝试

var $blocks = $("#content .blocks");
$(".masinfo").click(function () {
    var divToShow = "." + $(this).attr('href').replace('#', '');
    var $divToShow = $(divToShow);
    if ($divToShow.hasClass("activeBlock")) {
        $divToShow.slideUp("slow");
        $divToShow.removeClass("activeBlock");
    } else {
        var $active = $blocks.not($divToShow).filter(':visible');
        if ($active.length) {
            $active.slideToggle("slow", function () {
                $divToShow.slideDown("slow"); // then start this one?
                $divToShow.addClass("activeBlock");
            });
            $active.removeClass("activeBlock"); // finish here
        } else {
            $divToShow.slideDown("slow"); // then start this one?
            $divToShow.addClass("activeBlock");
        }

    }
    return false;
});

但是:ぁzxswい


-1
投票

你可以使用:

Fiddle.delay()

要么

http://api.jquery.com/delay/setTimeout()

为了在它们之间插入几毫秒。

© www.soinside.com 2019 - 2024. All rights reserved.