У меня небольшая проблема с jQuery ajax и анимацией.
У меня есть макет с меню, которое вызывает мою страницу, и при загрузке добавьте небольшую анимацию с jQuery easing
Вот мой ajax.js
$(document).ready(function() {
// Ajax request
$(".transition").click(function() {
page = ( $(this).attr("id") );
$.ajax({
type: "GET",
url: page,
data: "ajax=true",
cache: false,
success: function(html) {
afficher(html);
},
error: function(XMLHttpRequest,textStatus,errorThrows) {
// Erreur durant la requête
}
});
});
function afficher(donnees) {
$(".step").empty();
$(".step").append(donnees);
// Animate
var step_position = $(".step").offset();
$(".step").offset({ top: step_position.top, left: step_position.left - 1000 });
$(".step").animate({
"left": '+=1000',
}, 750, 'easeOutBack');
}
});
Если пользователь нажимает, все отлично работает.
Но если:
- Пользователь дважды щелкает по той же ссылке
- Пользователь быстро нажимает на несколько ссылок
тогда загруженные данные уходят со страницы.
Я знаю, что есть проблема с тем фактом, что я работаю с асинхронными данными и что я запрашиваю offset
в точное время. Я пытался указать константу в качестве параметров (вместо var step_position = $(".step").offset();
), но это не сработало.
Как мне сделать так, чтобы мои данные всегда отображались правильно, независимо от того, сколько было сделано вызовов ajax?