【问题标题】:jQuery animate doesn't complete (slideUp/slideDown)jQuery 动画未完成 (slideUp/slideDown)
【发布时间】:2010-02-09 00:24:32
【问题描述】:

我有一个带有左侧导航的系统的 Web 界面。在导航上,我可以展开/折叠一些菜单。我使用 jQuery slideUp/slideDown 来为它们设置动画:

if (enable)
{
    navbar_slide_down = true;
    $j(l1_folder).slideDown("normal", function() {
        navbar_slide_down = false;

        on_navbar_animation_complete();
    });
}
else
{
    navbar_slide_up = true;
    $j(l1_folder).slideUp("normal", function() {
        navbar_slide_up = false;

        on_navbar_animation_complete();
    });
}

两个动画同时运行以提供类似手风琴的效果。这几乎适用于所有情况。

我现在遇到的问题是,在内容框架(与导航不同的框架)中执行某些操作后,slideDown 和 slideUp 功能不再起作用。动画开始,但几乎立即停止,并且永远不会触发回调。这会导致菜单锁定。我只能在 FireFox 3.5.7 中重现此问题(其他版本似乎还可以)。如果我打开 Firebug,问题就不会发生。

我尝试从 jQuery 1.3.2 升级到 1.4.1,没有运气。

动画是否有任何原因会失败而不调用回调?如何使用未缩小的 jQuery 进行调试?

【问题讨论】:

  • 考虑找到console.log 的出现,因为这就是为什么它可能在 FireBug 开启时工作而在它关闭时失败
  • 删除对记录器的任何引用并没有改变任何东西

标签: javascript jquery animation


【解决方案1】:

问题与顺序有关(即:单击此,然后单击那个,将发生挂起)。我在第一页发现了问题:

addEvent(window, 'unload', end_page);

并改成:

addEvent(window, 'onbeforeunload', end_page);

我仍然不确定为什么这会影响外框(并导致 jQuery 动画中断),但我最好的猜测是卸载处理程序中的代码在第二页上运行并在某处发生冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2017-03-17
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多