jquery在动画div上的多次点击事件

Posted

技术标签:

【中文标题】jquery在动画div上的多次点击事件【英文标题】:jquery multiple click events over animated div 【发布时间】:2012-04-11 13:05:12 【问题描述】:

我想要实现的是使 div 上下动画,直到下一次单击它应该停止并等待再次单击以再次开始动画。

http://jsfiddle.net/WwJRD/

这是为我的 div 设置动画的函数:

function upAndDown(element,x) 

    $(element).animate('top':'+='+x+'px', 'slow')
    .animate('top':'-='+x+'px', 'slow',function()upAndDown(element,x));
;

$('.clickThis').click(function()
    upAndDown('.moveThis',50);
);

我真的不知道如何得到我想要的!

谢谢

【问题讨论】:

【参考方案1】:

这实际上有点棘手,因为您有多个排队的动画和一个回调。

问题是如果你只是stop,然后再调用upAndDown,你将从当前位置开始动画,这意味着你可能会偶尔在页面上移动。你也不能在stop()调用中jumpToEnd,因为你仍然会调用回调。

我通过在(适当地)对象移动时添加一个类moving 来解决此问题。这在回调中用于决定是否继续动画。

你会得到这个:

http://jsfiddle.net/EkpNK/

现在,它会一直保持动画效果,直到完成一个循环。如果你想让它立即停止,你可以调用.stop(false, true)两次来停止两个动画并返回到原来的位置:

http://jsfiddle.net/EkpNK/1/

如果您想在原地停止并从中断处继续,则需要一些额外的代码。

【讨论】:

【参考方案2】:

我的解决方案与 Jeff B 的解决方案非常相似,但使事情 (IMO) 更简洁,并使用 jQuery.data() 函数来存储“动画”标志而不是添加/删除类:

http://jsfiddle.net/HnK98/

【讨论】:

以上是关于jquery在动画div上的多次点击事件的主要内容,如果未能解决你的问题,请参考以下文章

1000个div上的jQuery点击事件,优化方法?

jQuery实现鼠标点击Div区域外隐藏Div

jQuery:为啥我在 li 元素上的点击事件不起作用?

点击事件上的 JQuery 只工作一次

js click事件防止重复点击

jquery中click事件的累加绑定,点击一次,执行多次