我想滑动一些div,然后slideDown 1 div.但是,我遇到了一些问题.
$("#divDocument,#divLocation").slideUp("normal", function() { $("#divSearch").slideDown("normal", doStuff()); });
使用此代码,divDocument是可见的,divLocation不可见.由于divLocation已经隐藏,doStuff()事件会立即触发,即使divDocument尚未隐藏.
$("#divDocument).slideUp("normal", function() { $("#divSearch").slideDown("normal", doStuff()); });
这段代码工作正常,因为它在调用doStuff()之前等待divDocument完全隐藏.我在这里使用多元素选择器错了吗?我做错了什么吗?
如果divLocation已经可见,为什么不先隐藏它?
$("#divDocument,#divLocation").hide().slideUp("normal", function() { $("#divSearch").slideDown("normal", doStuff()); });
编辑:
对不起,我很困惑.slideUp用于隐藏元素.出于某种原因,我认为这是为了向他们展示.在这种情况下,你可以这样做:
$("#divDocument,#divLocation").filter(':visible').slideUp("normal", function() { $("#divSearch").slideDown("normal", doStuff()); });
使用:visible
过滤器,它只会slideUp
在可见的任何元素上执行,因此可以隐藏它们slideUp
.我猜这是你正在寻找的,因为没有必要隐藏已经隐藏的元素.如果你想暂时显示隐藏的那个然后slideUp
它,你可以只是将我的原始答案从切换hide()
到show()
然后执行slideUp
.