JQuery CSS $ (':animated' ).动画在屏幕上完成后的长度延迟

标签 jquery html css

我正在尝试在 css/j 查询中创建一系列图 block ,这些图 block 表示建筑物及其中的房间。当你点击建筑物时,会出现一些 j 查询动画,它会移除其他建筑物,然后显示建筑物内的房间。一旦进入建筑物,“后退”瓷砖将触发进一步的动画以返回到原始设置。

这是一个jsfiddle显示这个。

我使用以下代码片段来防止一次点击多个图 block :

if ($(':animated').length) {
  return false;
}

然而,从动画在屏幕上结束到上面的 if 语句不返回 false 似乎有相当长的延迟。在 js fiddle 上,如果您单击一个图 block 并在动画结束后立即单击返回,您将看到它。 (我在 if 语句中放置了一个警报,以表明它正在此处被捕获)。

能否说明为什么当屏幕上的动画结束时,if 语句仍然返回 false?在每个步骤的动画完成之前,是否有更好的方法来防止任何点击?

最佳答案

我认为您的问题与 $building.animate 函数有关。

检查这段代码:
(还有 here)

 $building.siblings().hide(1000, function () {
    console.log('complete 1');
    $building.animate({top:"0px", left:"75px"}, 0, function () {
                                                ^
                                               here

        $building.parent().siblings(".rooms").children("."+$buildingId).show(1000);
        $building.parent().siblings(".backs").children("."+$buildingId).show(1000);
        console.log('complete 2');
    });
});

我把时间归为0(零)。发生的事情是 .siblings() 发现了许多 sibling ,脚本在 1000 毫秒超时后运行每个 .parent() 函数,等待最后一个在开始新的 sibling 之前完成。

仅用于调试目的也检查 here ,当超时仍为 1000ms 时,在动画运行时查看 console.log。

关于JQuery CSS $ (':animated' ).动画在屏幕上完成后的长度延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17325010/

相关文章:

html - 排序无序列表和列表项以在 ul 上显示框阴影

javascript: var 仅在 IE 中未定义

jquery - 使用jquery printElement打印所有div内容

jquery如何在动态表中选择当前TD的第n个 child

HTML5 视频移动问题上的 CSS 文本

javascript - 应用多个类不能正常工作

javascript - Angular/HTML - 将显示完整的 JSON 但不能仅显示单个属性

javascript - Jquery - 如何增加行中每个元素的顶级属性的值

html - Bootstrap 3 "btn-group"小屏幕上的无响应行为

javascript - Bootstrap collapse 有一个跳跃的过渡