【问题标题】:Reset on Hover (jQuery)悬停时重置 (jQuery)
【发布时间】:2011-04-12 00:58:09
【问题描述】:
$("#notification").slideDown("slow").delay(2000).slideUp("slow");

.. 有效,但我想添加一个条件,以便如果悬停#notification,则计时器/延迟将停止,直到鼠标悬停。然后在 mouseout 时计时器启动,然后最终隐藏元素(除非它不再悬停)。

谢谢!

【问题讨论】:

  • 元素 slideDown 事件现在什么时候发生?在悬停()? document.ready()?
  • 它基于cookie,如果没有找到cookie,向下滑动...
  • 按照您的描述方式,理论上,如果您将鼠标悬停在 1999 毫秒后,计时器将停止,然后当您再次鼠标移出时,仅剩 1 毫秒即可再次隐藏。这是必须的吗?因为在悬停时重置计时器会容易得多:)
  • 啊,我想我明白了,您可能有某种通知和/或显示按钮 - 然后在大约 2 秒内隐藏,您希望它在有人将鼠标悬停在通知上时防止隐藏。只是一个注释 - 为您的问题添加上下文将真正有助于答案。
  • 抱歉,是的,onload 如果找不到 cookie,此通知会向下滑动,如果用户正在阅读(鼠标悬停)它,我不希望它关闭。

标签: jquery timer hover slide


【解决方案1】:

如果我理解正确,您希望能够在悬停元素时停止延迟/动画?

为此使用clearQueue()

$(document).ready(function() {
    if(cookieIsPresent) {
        $("#notification").hover(function() {
            $(this).stop(true, true).clearQueue(); // You might not need to use clearQueue() but test it out
        }, function() {
            $(this).delay(2000).slideUp("slow");
        }).slideDown("slow").delay(2000).slideUp("slow");
    }
});

【讨论】:

  • erm.. 整个事情应该怎么看与滑动/滑动和延迟呢?
  • 不客气 :) 尝试删除 clearQueue 看看是否可行,我听说 stop() 可能无法在 delay() 上运行,但可能已经修复。
【解决方案2】:

尝试处理 onmouseover(不是 onmousehover)事件。

【讨论】:

  • 您可以尝试在答案中投入更多精力。附言没有 onmousehover 事件。
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2014-06-19
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多