Я пытаюсь периодически:JQuery показать/скрыть не ждать завершения
- выборки данных из вызова Ajax
- сравнить данные с содержанием DIV
- , если данные = содержание DIV: скрыть DIV, изменить данные, показать DIV
Вот мой код:
...
<div id="myDiv">old data</div>
</body>
<script type="text/javascript">
$(document).ready(function() {
updates();
done();
});
function done() {
setTimeout(function() {
updates();
done();
}, 5000);
}
function replace(div, content){
$(div).html(content)
}
function updates() {
$.ajaxSetup({ cache: false });
$.getJSON("mywebsite/get_data", function(data) {
if ($("#myDiv").html() !== data){
$("#myDiv").hide(400, replace("#myDiv", data));
$("#myDiv").show(400);
}
});
}
</script>
...
Проблема заключается в том, что содержимое div заменяется новыми данными до. Div полностью скрыт, даже если функция обратного вызова replace() передается функции hide().
Как заставить функцию hide() дождаться ее завершения (400 мс в этом примере) перед вызовом функции replace()?
Я также пробовал с задержкой() и setTimeout(), но он делает то же самое.
Благодаря
Глядя на код, я был бы удивлен, если 'div' скрыт вообще. Вызов 'show()' также должен быть в обратном вызове для 'hide()' или он будет выполняться немедленно. – David
Вам не нужно использовать ';' для завершения вашей линии JS, но вы должны. Особенно, если вы попросите людей взглянуть на ваш код. –