Как заметил @amе не я.$("#globalUserContent")
имеет двух дочерних элементов, поэтому обратный вызов запускается дважды по одному для каждого дочернего элемента. Используйте это:
$("#classesLink").click(function(event) {
$.when($("#globalUserContent").children().slideUp("normal"))
.then(function() {
$.ajax({
type: "POST",
url: "classes.php?token="+randString+"",
success: function (msg) {
$("#globalUserContent").html(msg);
},
error: function (msg) {
$("#globalUserContent").html(msg);
}
});
});
return false;
});
Это выполнит запрос callback-ajax, когда эффект slideUp
закончится, и неЖесткий код задержки setTimeout
в коде.
Если вы жестко закодировали 600
в коде, код может прерваться, если продолжительность "normal"
изменится однажды, или кто-то изменил эффект длительности slideUp
но не изменила задержку тайм-аута.
Но вы можете поместить задержку продолжительности в переменную, чтобы вы изменили ее в одном месте - @am not, я предлагаю.
when
docs :
Описание: Предоставляет способ выполнения функций обратного вызова на основе одного или нескольких объектов, обычно отложенных объектов, представляющих асинхронные события.