当前位置: 首页 > 知识库问答 >
问题:

用jQuery在n秒后阻止“显示然后隐藏”

乐正乐湛
2023-03-14

乍一看,我试图做一些相当简单的事情,但我做不到。我有一个按钮和两个隐藏的div。按下按钮时,我希望第一个div显示,n秒后隐藏,然后第二个div显示。

HTML:

<button id="button">
  push
</button>
<div id="div1" style="display:none">
  firstDiv
</div>
<div id="div2" style="display:none">
  secondDiv
</div>

包含JS的完整代码如下所示:https://jsfiddle.net/439xbfe5/

我已经在这里检查了答案:jQuery显示5秒钟,然后隐藏

这个代码的问题是#div2在#div1消失之前出现:

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show().delay(timeLimit).fadeOut();
  $("#div2").show();
  
});

同样的问题:

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show();
  setTimeout(function() { $("#div1").hide(); }, timeLimit );
  $("#div2").show();
  
});

我还尝试创建一个阻塞睡眠功能,比如:

function sleep(ms){
  var start = new Date().getTime();
  while(true){ 
    if(new Date().getTime()-start>ms){
        return; 
     }
  }
}

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show();
  sleep(timeLimit);
  $("#div2").show();
});

但这根本不起作用。

此外,显示#div2只是我问题的一个例证。实际上,我不需要编译显示然后隐藏,但是#div1更像是按钮按下前后的过渡步骤。我希望你理解我的问题(对不起我的英语)。

谢谢!

共有1个答案

贾沛
2023-03-14

您必须使用complete回调函数在jquery动画“完成”后执行某些操作。

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show().delay(timeLimit).fadeOut(function(){
    $("#div2").show();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="button">
  push
</button>
<div id="div1" style="display:none">
  firstDiv
</div>
<div id="div2" style="display:none">
  secondDiv
</div>
 类似资料:
  • 我有一些链接,当我悬停在上面时,会显示与该链接相关的特定文本。我已经使用悬停功能来显示和隐藏div。 我还想添加这样的特性,即文本在几秒钟后自动改变,以显示下一个div的内容。即is循环通过DIVS。Hide div 1,show div 2,Hide 2,show div 3等。下面是显示悬停功能如何工作的代码。将鼠标悬停在右侧的链接上,左侧的文本将发生变化: null null

  • 所以我想有2个JPanels。向上JPanel(内嵌面板)和向下JPanel(主面板)。我想在JFrame中添加keyListener,所以当我按下任何键时,面板隐藏,这样我们就可以看到向下的面板。代码应该如何工作? 此代码不隐藏内部面板。发生了什么?

  • 我想在页面加载时显示1个工具提示,然后在几秒钟后隐藏它和/或在另一个工具提示悬停时隐藏它。 我已经找到了几种方法来做到这一点,但我使用了一个Elementor插件作为我的工具提示,所以它嵌套在几个div中,这让我感到困惑。 当您悬停在“div.eael-tooltip”上时-“span.eael-tooltip-text”显示(这是我想自动显示几秒钟的内容) 我知道我可能需要一些jQuery,有谁

  • 问题内容: 在 puppeteer中, 我想等待定义的时间后再转到下一行代码。 我尝试将a 放入评估函数中,但似乎只是被忽略了 此代码不等待,仅 在等待之前 和 之后 编写 __ 你知道怎么做吗? 问题答案: 您可以使用一点承诺功能, 然后,在需要延迟的任何时候调用它。 如果必须使用操纵符,请使用内置的waitFor函数。 如果仍然要使用page.evaluate,请在4​​秒钟后解决。您没有解决

  • 主要内容:实例,jQuery hide() 和 show(),实例,实例,实例,jQuery toggle(),实例隐藏、显示、切换,滑动,淡入淡出,以及动画,哇哦! 因为时间是宝贵的,我们提供快捷方便的学习方法。 在小牛知识库,你可以学习需要的知识。 实例 jQuery hide() 简单的jQuery hide()方法演示。 jQuery hide() 另一个hide()实例。演示如何隐藏文本。 jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和

  • 如何自动隐藏或删除DIV的内容。我把一些信息放在一个容器里。 我想显示新消息只有几秒钟,它可以是5,10什么,但然后我想它是空的,添加新消息,显示它,而不是隐藏。我当然知道setTimeout的"诀窍": 但是在这个选项中,我必须通过每个消息传递这个脚本,这不是我要找的。我也尝试过setInterval,但是正如名字所说,它是间隔,所以消息可以在5秒钟内可见,或者如果它到达间隔时间的末尾,甚至可以