2013-09-28 2 views
1

Я хочу, чтобы dalay 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 (" Correct ");});' Если вы используете 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() предназначен только для очереди FX:

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

Смежные вопросы