情况
我有一系列 div 设置来包含各种内容:
<div id="main">
<div id="about"></div>
<div id="contact"></div>
<div id="flickr"></div>
<div id="twitter"></div>
</div>
我还有一个导航,可以从上方淡入和淡出特定的 div(使用动画或淡入淡出功能)。
问题
我希望能够在使用导航时检查所有 div 何时被隐藏 - 这样我就可以在所有 div 都被隐藏时触发一个事件。
//Custom animation function.
jQuery.fn.fadeThenSlideToggle = function(speed, easing, callback) {
if (this.is(":hidden")) {
return this.slideDown({duration: 500, easing: "easeInOutCirc"}).animate({opacity: 1},700, "easeInOutCirc", callback);
} else {
return this.fadeTo(450, 0, "easeInOutCirc").slideUp({duration: 500, easing: "easeInOutCirc", complete: callback});
}
};
//example nav items.
$('#toggleContact').click(function() {
if (!$("#contact .tab").is(':animated')) {
$('#contact .tab').fadeThenSlideToggle(); //custom animation function
}
});
$('#toggleAbout').click(function() {
if (!$("#about .tab").is(':animated')) {
$('#about .tab').fadeThenSlideToggle();
}
});
//example check to see if all divs are hidden.
if((($(":hidden", '#main').length == 3) { //3 not 4 due to delay :S
}
然而,这被证明是困难的,因为由于淡化功能延迟将 div 更新为隐藏,因此检查始终是一个 div。
是否有任何可靠的方法来检查所有 div 是否被隐藏?单击导航中的项目时初始化检查并考虑到每个 div 需要一定的持续时间才能在单击项目后实际设置为隐藏?
干杯。
编辑-我想要一个包括“检查隐藏的 div”的解决方案,而不仅仅是我应该把它放在哪里。谢谢。