javascript - 为什么回调前的持续时间不断增加?

标签 javascript jquery jquery-animate

在玩弄一些 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/

相关文章:

javascript - ons-popover 不显示内容

javascript - jQuery 的 '.focus()' 的行为不像我预期的那样

javascript - 使用 jQuery 或 Javascript 将工具提示功能添加到 select2 下拉列表中?

javascript - 单击按钮后使重叠的 div 动画到前面

jquery - 当使用 jQuery 动画远离光标时,停止 ":hover"元素保持它们的状态?

python - 动画散点图

JavaScript Canvas 游戏在一段时间后下降 FPS

javascript - 如何更改 Swiper.js 的默认键盘快捷键行为?

javascript - Oracle APEX - 如何在打印时缩放区域以适合单页

javascript - 如何在页面加载时显示正在加载的 gif 图像