【问题标题】:jQuery - overwrite delay() action?jQuery - 覆盖延迟()动作?
【发布时间】:2011-04-05 03:15:59
【问题描述】:

我有此代码用于显示与页面重叠的错误消息。我刚刚添加了点击监听器——如果它被点击,我希望它跳过延迟并立即关闭。然而,什么也没有发生。如果我在点击监听器中使用 .hide() ,它就可以工作。但我想顺利过渡。

有什么想法吗?

// Flash messages effect
$("#FlashMessage").slideDown('250').delay(3000).slideUp('250');

// Hide flash message when clicked
$("#FlashMessage").click(function(){
    $("#FlashMessage").slideUp('250');
});

【问题讨论】:

    标签: jquery delay slidedown slideup


    【解决方案1】:

    如果#FlashMessage 是一个实际的 Flash 对象,它可能会抓取输入而不是按预期发出事件。

    虽然我可能错了,但可能的解决方案是使用 .focus() 而不是 .click()`

    尝试使用图像而不是闪光灯,并使用它进行测试,如果它有效。我是对的,闪电侠否认了这件事。

    【讨论】:

    • 您好,感谢您的回复。不,它只是一个带有文本的 div。我明白现在发生了什么。当我单击时,它只是将新命令添加到队列的末尾。所以我需要以某种方式取消现有命令,并用新命令替换它。取消延迟...
    • 嗯,明白了。试试看:$("#FlashMessage").stop(true,true).slideUp('250');
    【解决方案2】:

    jquery.delay 无法跳过。改用js超时方法

    $("#FlashMessage").slideDown('250');
    window.setTimeout( function(){ $("#FlashMessage").slideUp('250'); },3000);
    
    // Hide flash message when clicked
    $("#FlashMessage").click(function(){
        $("#FlashMessage").slideUp('250');
    });
    

    http://www.w3schools.com/js/js_timing.asp

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多