【问题标题】:Rails 3 UJS run a while loop when waiting for an ajax:callbackRails 3 UJS 在等待 ajax:callback 时运行一个 while 循环
【发布时间】:2012-10-11 08:18:38
【问题描述】:

这是我的 :remote => true 表单的 javascript。

目前,当表单提交时,该函数运行一次。 (宽度增加 5%。

但是,我希望这个动画循环运行,以便宽度以 5% 的增量不断增加,直到我得到一个 ajax:success 或一个 ajax:failure 回调,此时我想跳转到另一个函数。

$('#new_message').bind('ajax:loading', function() {
  $('#send_bar').animate({
    width: '+=5%'
  });
});

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3.2 ujs


    【解决方案1】:

    声明一个运行动画的函数,然后在completion parameter中,传递该函数,使其递归调用自身:

    var start_animation = function() {
      $('#send_bar').animate({width: '+=5%'}, 5000, 'linear', start_animation);
    }
    

    在加载函数中,调用该函数开始动画:

    $('#new_message').bind('ajax:loading', function() {
      start_animation();
    });
    

    然后在绑定到 ajax:success 和 ajax:failure 时,调用stop:

    $('#new_message').bind('ajax:success', function() {
      $('#send_bar').stop();
    });
    
    $('#new_message').bind('ajax:failure', function() {
      $('#send_bar').stop();
    });
    

    【讨论】:

    • 谢谢.. 我几乎明白了.. 似乎不太适合我。我无法启动动画(请参阅更新)
    • 很高兴听到。我的回答有问题吗?我想我会问一下,以防我需要为其他人更新它。
    • 不,我自己的错误。您的答案唯一可能是这更好?:
    猜你喜欢
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2015-12-05
    • 2021-08-14
    • 2012-10-13
    • 2012-05-20
    相关资源
    最近更新 更多