j查询延迟无法正常工作

jQuery delay not working properly

本文关键字:工作 常工作 查询 延迟      更新时间:2023-09-26

我似乎无法更新我的文本,延迟为 0.8 秒。

function beginningText() {
 $('#bubbleText').text('H').delay(800);
$('#bubbleText').text('He');
}

.delay()阻止在同一语句上链接的代码,但阻止在其之后的语句上的代码。

从技术上讲,您想要的结构是这样的:

$('#bubbleText').text('H').delay(800).text('He');

但是,这行不通。 出于一个非常不明显的原因(我只需要抬头)。 .delay()对jQuery中"排队"的项目进行操作,例如动画和其他需要时间的东西。 设置文本或任何其他此类"即时"操作不会"排队",只是立即发生。

您可以使用 .queue() 函数手动将操作添加到队列中:

$('#bubbleText').text('H').delay(800).queue(function(){
    $('#bubbleText').text('He');
});

您可能希望在此处设置超时而不是延迟。有s

为您制作了小提琴https://jsfiddle.net/vatsalpande/5d09nbLo/

示例代码

$(document).ready(function(){
function beginningText() {
    $('#bubbleText').text('H');
    setTimeout(function(){ $('#bubbleText').text('HE') }, 3000);
   }
 beginningText();
});
<div id = "bubbleText"></div>

根据jQuery文档

.delay() 方法最适合在排队的 jQuery 效果之间延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,后者可能更适合某些用例。

所以要带走的关键点是

  1. 使用 .delay() 实现 jQuery 效果,包括动画。

  2. setTimeout() 最适合用于其他所有内容。例如,当您需要在某个经过的时间触发事件。

希望这有所帮助。

快乐学习