【问题标题】:How to make <div> .slideUp work with .delay() elsewhere如何使 <div> .slideUp 在其他地方与 .delay() 一起工作
【发布时间】:2026-02-23 22:30:02
【问题描述】:

抱歉标题不好,这么短的地方不容易解释。

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

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

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

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

Javascript:

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

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

谢谢!

【问题讨论】:

  • @js1568 stop 只会停止动画而不是延迟,至少在我看来
  • 效果不太好,有点来回跳动,好像被卡住了。
  • 是的,.stop() 会在 .delay 完成之前中断您单击时的延迟。

标签: javascript jquery function onclick delay


【解决方案1】:

我解决了它,实际上要感谢多种答案。

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

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

【讨论】: