Javascript jQuery:offset()动画和ajax

Javascript jQuery:offset()动画和ajax,javascript,jquery,jquery-easing,Javascript,Jquery,Jquery Easing,我在jQueryAjax和动画方面有点问题。 我有一个带有菜单的布局,可以调用我的页面,加载时,使用jQuery提供一点动画 这是我的ajax.js $(document).ready(function() { // Ajax request $(".transition").click(function() { page = ( $(this).attr("id") ); $.ajax({ type: "GET", ur

我在jQueryAjax和动画方面有点问题。 我有一个带有菜单的布局,可以调用我的页面,加载时,使用
jQuery提供一点动画

这是我的
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');
    }
});
如果用户点击,一切都很好

但如果:

  • 用户双击同一链接
  • 用户快速点击几个链接
然后,加载的数据将离开页面

我知道我处理异步数据时存在一个问题,我要求在一个精确的时间获得
偏移量。我尝试将常量作为参数(而不是执行
var step_position=$(“.step”).offset();
)但没有成功

无论进行了多少次ajax调用,如何始终正确显示数据?

Moi aussi

是的,他也有同样的问题——这叫做比赛条件。我有一个按钮-我不知道你是否在用

我所做的是在单击处理程序中,我做的第一件事是使用JQUERY
.attr()
函数禁用按钮-添加disable属性


这会阻止第二次单击执行任何操作。当ajax返回结果时,我重新启用了该按钮。在这种情况下,您必须在动画之后的某个地方使用回调来重新启用按钮。

是的,我已经尝试过了,但是用户必须等待页面加载,然后才能单击其他任何内容。如果他打错了,他必须等待:这就是我想要避免的。我最终做了非常类似的事情。我定义了一个全局变量,用于检查ajax调用是否仍在处理中。这并不能解决我的“流体导航”问题(请参阅我之前的评论),但可以。不管怎样,如果没有人提出不同的意见,我会在几天后接受你的回答。谢谢如果不希望用户等待太长时间,可以为jqueryajax调用设置一个超时,最好在服务器上设置一个(稍微)更短的超时。