停止元素跳动jquery
我有以下 jquery,它使按钮链接跳动。
$('#BtnBoxGreeting').effect('pulsate', { times: 3 }, 800,function(){
setInterval(function(){
$('#BtnBoxGreeting').show('pulsate', { times: 3 }, 800, '');
},8000);
});
<% end %>
$('#BtnBoxGreeting').click(function(){
$(this).stop();
});
我希望效果在单击按钮时停止,但由于间隔循环,它只是继续进行。 单击按钮时如何停止动画?
I have the following jquery that pulsates a button link.
$('#BtnBoxGreeting').effect('pulsate', { times: 3 }, 800,function(){
setInterval(function(){
$('#BtnBoxGreeting').show('pulsate', { times: 3 }, 800, '');
},8000);
});
<% end %>
$('#BtnBoxGreeting').click(function(){
$(this).stop();
});
I want the effect to stop when the button is clicked but it just keeps on going because of the interval loop.
How can I stop the animation when the button is clicked?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
var pulsatingInterval
为其分配
setInterval
调用:pulsatingInterval = setInterval(...);
单击按钮时清除此间隔
clearInterval(pulsatingInterval);
var pulsatingInterval
Assign
setInterval
call to it:pulsatingInterval = setInterval(...);
Clear this interval on button click
clearInterval(pulsatingInterval);
我发现以下解决方案对我来说最简单并且效果很好。
我为我想要脉动的元素提供了一个“脉动”类,如下所示:
在“单击”按钮时,我删除了该类:
这样我就不必担心间隔再次开始。
I found the following solution the easiest for me and works very well.
I give a class 'pulsate' to the element I want to pulsate as follows:
On the 'click' of the button I remove the class:
This way I did not have to worry about the Interval starting again.
当你 $(this).stop();这部分指的是按钮的点击动作,而不是效果。
在此处查看 .stop() 选项: http://api.jquery.com/stop/
我打赌像 $('#BtnBoxGreeting').stop() 这样的东西会起作用。
when you $(this).stop(); the THIS part refers to the click action of the button, not the effect.
check out the .stop() option here: http://api.jquery.com/stop/
I bet something like $('#BtnBoxGreeting').stop() will work.
我认为您需要设置一个变量来指示是否单击停止。如果是这样,请勿在 setinterval 方法中执行脉动操作(在该变量上包含 if)。当然,一旦超时,就无法再停止脉动动作了。
例子:
I think you need to set a variable that indicates whether stop is being clicked. If so, do not execute the pulsate action in the setinterval method (include an if on that variable there). Of course, once the timeout is expired, you cannot stop the pulsate action anymore.
Example: