隐藏然后使用jQuery显示div

Jon*_*ury 4 jquery callback css-selectors

我想滑动一些div,然后slideDown 1 div.但是,我遇到了一些问题.

$("#divDocument,#divLocation").slideUp("normal", function()
    { $("#divSearch").slideDown("normal", doStuff()); });
Run Code Online (Sandbox Code Playgroud)

使用此代码,divDocument是可见的,divLocation不可见.由于divLocation已经隐藏,doStuff()事件会立即触发,即使divDocument尚未隐藏.

$("#divDocument).slideUp("normal", function()
    { $("#divSearch").slideDown("normal", doStuff()); });
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,因为它在调用doStuff()之前等待divDocument完全隐藏.我在这里使用多元素选择器错了吗?我做错了什么吗?

Pao*_*ino 6

如果divLocation已经可见,为什么不先隐藏它?

$("#divDocument,#divLocation").hide().slideUp("normal", function() { 
    $("#divSearch").slideDown("normal", doStuff()); 
});
Run Code Online (Sandbox Code Playgroud)

编辑:
对不起,我很困惑.slideUp用于隐藏元素.出于某种原因,我认为这是为了向他们展示.在这种情况下,你可以这样做:

$("#divDocument,#divLocation").filter(':visible').slideUp("normal", function() { 
    $("#divSearch").slideDown("normal", doStuff()); 
});
Run Code Online (Sandbox Code Playgroud)

使用:visible过滤器,它只会slideUp在可见的任何元素上执行,因此可以隐藏它们slideUp.我猜这是你正在寻找的,因为没有必要隐藏已经隐藏的元素.如果你想暂时显示隐藏的那个然后slideUp它,你可以只是将我的原始答案从切换hide()show()然后执行slideUp.