jQuery在使用width时设置动画时出现的问题:";隐藏“+;宽度:“;“显示”;

jQuery在使用width时设置动画时出现的问题:";隐藏“+;宽度:“;“显示”;,jquery,jquery-animate,render,Jquery,Jquery Animate,Render,我已经处理这个问题一段时间了,不知道是我的代码还是jQuery被窃听了 我在两个不同的列表(A和B)上同时执行两个.animate(),这两个列表都向左浮动,其目的是折叠A和展开B,如下所示: $('elementA').animate({width: "hide", opacity: 0}); $('elementB').animate({width: "show", opacity: 1}); 它用于显示水平菜单栏中的子菜单,该菜单栏应在单击父topmenu项时弹出。问题是,它似乎在指定的

我已经处理这个问题一段时间了,不知道是我的代码还是jQuery被窃听了

我在两个不同的列表(A和B)上同时执行两个.animate(),这两个列表都向左浮动,其目的是折叠A和展开B,如下所示:

$('elementA').animate({width: "hide", opacity: 0});
$('elementB').animate({width: "show", opacity: 1});
它用于显示水平菜单栏中的子菜单,该菜单栏应在单击父topmenu项时弹出。问题是,它似乎在指定的元素折叠后立即出现“小故障”,从而在真正隐藏自身之前创建了一个丑陋的1ms全宽渲染。这个问题已经在谷歌Chrome和Firefox(可能也在Safari)中得到验证

看看JSFIDLE上的沙盒示例:
请注意,有些代码可能看起来太多了,但需要考虑多个列表项等

问题出在哪里?提前谢谢各位

编辑、澄清:


之所以使用“隐藏”和“显示”而不是硬编码的像素单位,是因为我无法预见元素的总宽度,因为可能有多个具有不同文本长度的菜单列表项。如果是jQuery automagic产生了这个小问题,那么也许可以通过jQuery检索生成的宽度,将其保存在变量中,然后在以后再次使用它?

我自由地进行了设置。我在那里做的是将关闭子菜单设置为1px,然后删除样式属性(因此它再次继承默认样式)

因为它只有1倍,而且淡入淡出效果完全,所以轻微的跳跃并不明显

请注意,我只在Chrome上测试过这一点——我不确定在其他浏览器上的性能


希望这能给你一些工作的机会

谢谢!移除样式属性是我错过的让它像那样工作的事情,很好。仍然想知道为什么最初的小故障。