2013-09-28 50 views
1

我想在一段时间内达到html()输出。我试过这个,但它不起作用。如何在jquery中使用延迟

if (data==1) { 
    $("#checked_answer"+ques_id).delay(800).html("Correct") ; 

} 
else { 
    $("#checked_answer"+ques_id).delay(600).html("Wrong") ; 
} 
+0

你需要明确按时间推迟,还是直到满足条件? – Rogue

+0

delay()仅适用于动画,不适用于其他方法。 – adeneo

+3

使用超时或将代码放入队列以便使用delay():'$(“#checked_answer”+ ques_id).clearQueue()。delay(800).queue(function(){$(this).html(“ “);});'如果您使用的是jq 1.9>,而不是clearQueue(),请使用.finish(),这将取消延迟,因为我知道 –

回答

2

您可以使用

var which = data == 1 ? 'Correct' : 'wrong', 
timeVal = which == 1 ? 800 : 600; 
setTimeout(function(){ 
    $("#checked_answer"+ques_id).html(which) ; 
}, timeVal); 
2

使用超时,而不是作为delay()仅供外汇队列:

var delay = data === 1 ? 800  : 600, 
    txt = data === 1 ? 'Correct' : 'Wrong'; 

setTimeout(function() { 
    $("#checked_answer"+ques_id).html(txt); 
}, delay); 

如果你只需要使用delay(),你有你的html()东西添加到队列:

$('#checked_answer').delay(800).queue(function() { 
    $(this).html('Correct').dequeue(); 
}); 
1
var val = 'correct'; 
var delay =800; 
$setTimeout(function() { 
     $('#checkedAnswer').html(val); }, delay); 
1

如果你想做到这一点使用动画队列,那么你就可以明确添加处理这样的延迟之后更改文本:

$("#checked-answer").delay(800).queue(function(next) { 
    $(this).html("Correct"); 
    next(); 
}); 

Demo