jQuery延迟无法正常工作

时间:2016-02-18 17:39:55

标签: javascript jquery html css delay

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

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

2 个答案:

答案 0 :(得分:1)

您可能希望在此处设置超时而不是延迟。 有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()最适用于其他所有内容。例如当你 需要在某个经过的时间触发事件。

  3. 希望这会有所帮助。

    快乐学习

答案 1 :(得分:0)

.delay()阻止代码在同一个语句中链接到它,但不会阻塞在它之后的语句中的代码。

技术上你想要的结构是这样的:

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

然而 ,这不起作用。一个非常明显的原因(我只需要抬头看)。 .delay()对jQuery中“排队”的项目进行操作,例如动画和其他需要时间的事情。设置文本或任何其他此类“即时”操作不会“排队”,只会立即发生。

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

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