如何使<div> .slideUp与其他地方的.delay()一起工作</div>

时间:2011-06-17 18:25:44

标签: javascript jquery function onclick delay

抱歉标题不好,在这么短的区域内不易解释。

我想要完成的事情: 我有一个小的通知栏,当你没有登录时,当你转到一个链接时从我的网站顶部向下滑动。它只是说“你不能以聪明的方式去这里”。单击它后,它会向下滑动,然后使用.delay(),它会等待2500ms然后再向上滑动。我喜欢它,所以如果你点击一个新的,它将取消延迟,并立即向上滑动旧的并关闭一个新的。

问题是: 如果单击按钮反复关闭通知,它将等待.delay完成后再转到下一个,从而创建无休止的通知流,您必须等待。我喜欢它,所以当你点击一个新的标签时,它会停止.delay并立即去那里,所以如果你是强迫性的或不小心点击,你就不会有延迟。

我的网站:http://thenozzle.net/

当您点击菜单栏中的“游戏”,“项目”,“竞赛”或“论坛”链接时,通知会停止。

使用Javascript:

function notifyevent(){
    $('#subscribercontent').slideUp('fast');
    $('#subscribercontent').slideDown('fast').delay(2500).slideUp('fast')
}

有意义吗?我看到这个问题到处都是,如果你多次点击,它必须等待延迟完成。但是我不想摆脱滑动并向下滑动,因为我希望通知的动作反应下降,因此您可以将通知栏与您的点击关联起来。

谢谢!

1 个答案:

答案 0 :(得分:0)

我解决了它,实际上归功于各种答案。

function notifyevent(){
    $('#searchoverflow').slideUp('fast');
    $('#subscribercontent').slideUp('fast');
    $('#subscribercontent').slideDown('fast');
    setTimeout("$('#subscribercontent').stop(true,true).slideUp('fast');", 3000)
}

我使用setTimeout而不是延迟,然后我使用.stop()不停止延迟,而是在超时之前停止动画。如果有人知道一个更好的方法,那就太棒了,如果你点击垃圾邮件就会破坏计时器,人们就会这样做。