jQuery 在显示新元素之前隐藏所有可见元素

jQuery hiding all visible elements before showing new one

所以我有以下代码:

function toggleTarget($element, cb) {
    $('.panel').each(function() {
       if($(this) != $element) {
           $(this).fadeOut('slow');
       }
    });
    $element.fadeToggle('slow', cb);
}

所以基本上你可以 click 在多个按钮上显示不同的 panels 所以我想做的是遍历所有可能的 panels 如果有显示隐藏他们然后显示与 clicked

按钮相关的 panel

P.S 对 JS 很陌生,所以请耐心等待并给出完整的答案。

使 $elementfadeToggle 成为 $('.panel')fadeOut 函数的回调函数。

function toggleTarget($element, cb) {
    $.when(
        $('.panel').not($element).fadeOut('slow');
    ).done(function() {
        $element.fadeToggle('slow', cb);
    });
}

这只是一个演示。你可以这样试试,

HTML :

<div id="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
</div>

jQuery :

$("#container div").on("click", function(){
    var selectedDiv = $(this);
    $(this).parent().children("div").fadeOut();
    $(this).fadeIn();
});

jsFiddle