jQuery重复事件直到用户点击它

时间:2010-04-14 06:08:57

标签: jquery

我在部分隐藏的div容器上有一个动画,当从ajax查询返回的结果为true时,该容器将执行。 (动画实际上只是将框放入更大的视图,然后再将其滑回)

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

如何在用户点击$('#box')之前每隔4秒重复播放一次此动画?

非常感谢任何帮助。谢谢:))

基于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 个答案:

答案 0 :(得分:3)

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()

答案 1 :(得分:2)

您可以使用 setInterval ,然后将其分配给变量。当用户点击$(“#box”)按钮时,调用 clearInterval 将变量作为参数传递。

var intervalId = setInterval(function(){/*your code*/}, 4000);

$("#box").click(function(){
    clearInterval(intervalId);
});

答案 2 :(得分:1)

使用javascript的clearinterval或setinterval函数隐藏动态创建的元素

查看以下链接以获取更多详细信息http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

答案 3 :(得分:1)

启动计时器:

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

杀死计时器:

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