在玩弄一些 jQuery 动画的过程中,我设法让自己陷入了困境(我无法使用 .unbind()
)。
我在 div#tray
中有一组“非事件” block ,我希望能够通过以下方式与 div#main
中的“事件” block 交换单击它们。当我单击 block 时,动画 block 总是会立即发生,但是我进行的交换越多,达到交换和动画输入功能所需的时间就越长。最终它崩溃了,因为步骤显然被跳过了。
我不明白为什么会这样(某种计时问题?),所以我写了一个 jsFiddle与我的代码,并希望任何见解。
最佳答案
每次动画结束时,您都会附加点击事件。这些只是简单地叠加并导致速度变慢。解决此问题的最简单方法是在重新绑定(bind)所有点击之前取消绑定(bind)它们。
function setupActiveBlockSwitcher() {
$('.block').unbind('click');
...
这是一个解决方案,但它并不是那么好,最好重新组织您的代码,这样您就不必在每次动画完成时重新绑定(bind)事件。
关于javascript - 为什么回调前的持续时间不断增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237443/