【问题标题】:How can I run a function anytime anything is animated with jQuery?我如何在任何时候用 jQuery 为任何东西设置动画时运行一个函数?
【发布时间】:2025-11-26 19:25:02
【问题描述】:

我的代码中有一些 jQuery 动画来上下滑动 div 以响应一些鼠标点击和其他逻辑。这一切都很好,但是在 IE 6 中,由于某些奇怪的原因,页面上的一些较小的图标图像不会与 div 的其余部分一起滑动。他们有点呆在原地,然后闪烁到新的位置,我把它归结为 IE6 的“功能”。

考虑到我必须支持 IE6,我只想在动画开始时隐藏图标,并在队列为空时再次显示它们。

我在队列本身中找不到对任何类型事件或挂钩的引用,我宁愿不添加隐藏代码,然后将显示代码添加到每个动画作为回调。

如果你能帮忙,谢谢-

b

【问题讨论】:

    标签: javascript jquery animation queue


    【解决方案1】:

    IE6 愚蠢的可能原因:hasLayouthttp://www.satzansatz.de/cssd/onhavinglayout.html

    尝试将 zoom: 1 添加到图像的 css 中。

    【讨论】:

    • 我试过了,但没有用 - 虽然为这篇好文章点赞,但我知道 hasLayout 问题,但链接是一个很好的深入解释 - 谢谢。
    【解决方案2】:

    您可以使用livequery plugin 执行此操作,如下所示:

    $(':animated').livequery(function() {
      // firing code here
    }, function() {
      // anything you want to run when all animation stops
    });
    

    这种类型的功能是 livequery 插件实际上仍然有用的唯一原因,否则它的功能已被 live()delegate() 取代

    而且由于这只发生在 IE6 中,在所有浏览器中隐藏它们是愚蠢的,所以在触发函数中,您可以添加一个带有 IE6 hack 的类,例如 .hide4IE6 { _display:none; },让它们在其他浏览器中保持显示。

    【讨论】:

    • 你测试过这个吗?我试过了,这个函数从来没有触发过。我认为这是因为没有属性修改(样式除外)。
    • @patrick - 我确实在我们的实时站点(使用 livequery v:1.0.3)的登台服务器上测试了这个,方法是在动画发生时隐藏徽标。 (天哪,我当然希望我记得在提交最新一批修复之前把它拿出来。)不知道为什么它不适合你。
    • 感谢您的回复。我将不得不再试一次(出于好奇,如果没有别的)。
    【解决方案3】:

    在 IE7 中是否也一样? div 或 icon 是否相对定位?

    【讨论】:

    • 只在IE6中做了,图片没有相对定位。除了它们非常小之外,我找不到任何一致的东西...... mVChr 的解决方案满足了我的需求......
    最近更新 更多