【问题标题】:jQuery - Stop delay fadeOut by another eventjQuery - 通过另一个事件停止延迟淡出
【发布时间】:2012-12-25 18:53:49
【问题描述】:

这是我当前的代码。它可以工作,但是在运行另一个事件时(例如通过单击按钮),我需要它停止并重置淡出。

代码

$('#selector').delay(5000).fadeOut('slow');
  • 我读到我需要使用animatesetTimeOut 而不是delay
  • 最好的方法是什么?

示例

在我的情况下,我在屏幕顶部有一个状态栏,如果我点击更新状态栏的内容,它不会消失。

【问题讨论】:

  • 一旦你fadeOut被停止,应该是永远吧?有时,您可能希望在悬停时阻止自定义工具提示淡出,但例如,一旦鼠标离开,它就会淡出
  • @JFK 它不应该是永远的。它应该停止并重置,就像您使用工具提示的情况一样。在我的情况下,我在屏幕顶部有一个状态栏,如果我单击更新状态栏的内容,它不会消失。

标签: jquery jquery-animate settimeout delay fadeout


【解决方案1】:

重置计时器

这是在设置计时器之前调用的。如果我疯狂地点击,它会阻止计时器完成。它停止并重置计时器。

clearTimeout(my_timer);

设置计时器

my_timer = setTimeout(function () {
    $('#selector').fadeOut('slow');
}, 5000);

【讨论】:

    【解决方案2】:

    只需在淡入淡出元素上调用.stop()方法即可:(#selector2是停止淡入淡出的按钮)

    $('#selector2').click(
        function()
        {
            $('#selector').stop();
        }
    );
    

    【讨论】:

    • delay 不能被stop 取消。
    • @AlexP。你确定吗?似乎对我有用
    【解决方案3】:

    查看函数 clearQueue() https://api.jquery.com/clearQueue/

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 2014-05-16
      • 2010-09-30
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 2011-02-17
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多