发生了什么
当某些元素使用 jQuery UI 进行动画处理时,根据效果,元素本身可能会被克隆。您正在操作的元素 ($e) 实际上是隐藏的,并且在动画时不是 DOM 的一部分,因此您的 CSS 规则在这里毫无用处。一些规则适用于 jQuery 克隆的元素,但是,z-index 不是其中之一。
用 CSS 动画修复它
我建议使用直接操作元素的CSS 动画,而无需克隆元素。尽管这会使效果explode
稍微复杂一些,但您不仅要维护 CSS 规则,而且 CSS 动画比 jQuery UI 动画具有巨大的性能提升。(jQuery UI 分别应用动画的每个“步骤”,这意味着许多重绘)。然而,它的一个限制是跨浏览器兼容性,因为看起来 IE 仍然无法与 this 相提并论。
使用 z-index 修复它
如果您一心想使用 jQuery UI 制作动画,或者不能冒缺乏跨浏览器兼容性的风险,那么仍有希望。在我的测试中,“克隆”元素获得了一个临时添加到它的类ui-effects-explode
。似乎大多数需要克隆原始元素的 jQuery UI 动画都应用了具有相似语法的类 ( ui-effects-*
)。
为了避免对单个效果的挫败感,您的万能方法是制定如下 CSS 规则:
[class^=ui-effects] {
z-index: 10;
}
where^=
的意思是“开始于”。这会将 z-index 应用于 jQuery UI 命名空间中的任何克隆元素,并且应该可以解决您的问题。