代码之家  ›  专栏  ›  技术社区  ›  Lyon

jquery重复事件,直到用户单击它

  •  2
  • Lyon  · 技术社区  · 16 年前

    我在一个部分隐藏的DIV容器上有一个动画,当从Ajax查询返回的结果为真时将执行该动画。(动画实际上只是把盒子放在更大的视图中,然后再滑回原来的位置)

    $('#box').animate({'right':'-184px'}, 300, 'easeOutBounce');
    $('#box').animate({'right':'-194px'}, 150, 'easeOutExpo');
    

    如何使此动画每4秒重复一次,直到用户单击 $('#box') ?

    非常感谢您的帮助。谢谢)

    基于Jandy和Rahul的代码..这就是我想要实现它的方式(虚拟设置)。

    这是启动动画的代码:

    // declares the variable first or $('#stop').click() will return undefined variable
    var intervalId = '';
    $('#submit').submit(function () {
      var intervalId = setInterval(function(){
        $('#box').animate({'right':'-184px'}, 300, 'easeOutBounce');
        $('#box').animate({'right':'-194px'}, 150, 'easeOutExpo');
      }, 4000);
    });
    

    这是用来停止动画的代码:

    $('#stop').click(function () {
      clearInterval(intervalId);
    });
    
    4 回复  |  直到 14 年前
        1
  •  3
  •   Tim Cooper    14 年前
    function anibox(){
       $('#box').delay(4000).animate({'right':'-184px'}, {duration: 300, easing: 'easeOutBounce'});
       $('#box').animate({'right':'-194px'}, {duration: 150, easing: 'easeOutExpo', complete: anibox});
    }
    

    要启动动画,只需调用

    anibox()
    

    代码中的任何地方,要停止它,请使用:

    $('box').stop();
    

    在单击事件处理程序中。 这是“jqueryish”的方式,没有 setInterval() .

        2
  •  2
  •   Luke Schafer    16 年前

    你可以使用 setInterval 然后把它赋给一个变量。当用户单击“”按钮时,调用 clearInterval 将变量作为参数传递。

    var intervalId = setInterval(function(){/*your code*/}, 4000);
    
    $("#box").click(function(){
        clearInterval(intervalId);
    });
    
        3
  •  1
  •   Pranay Rana    16 年前

    使用javascript的clearInterval或setInterval函数隐藏动态创建的元素

    有关详细信息,请查看以下链接 http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

        4
  •  1
  •   Greg W    16 年前

    启动计时器:

    var timer = window.setInterval(yourAnimationFunction, 4000);
    

    杀死计时器:

    $('#box').click(function(){
      clearInterval(timer);
    });