我正在尝试将加载了内联 Javascript 的现有菜单系统转换为仅使用 jQuery 的新的、更高效的代码。
我有一个带有翻转图像的单杠。我在页面中有一个包含整数值的隐藏字段。当页面加载时,相应的菜单会加载一个“粘性”版本的图像,并且所有其他菜单项在鼠标进入和离开时交换图像。它加载了大量的内联 Javascript 和一个怪物 Javascript 文件,每次我创建一个新站点时都很难转换。
我成功地将这一切转换为 jQuery,在那里我还能够禁用对粘性菜单项的单击。现在我可以简单地设置一些变量并根据每个站点的设计轻松自定义它。
工作很棒...
现在又来了一个新问题。一种设计在每个菜单图像下包含一堆滑动抽屉。滑动动画由外部 JS 文件处理,菜单抽屉本身每个都只是一个 DIV,其中包含嵌套在容器 DIV 中的内容。
因此,我为 jQuery 编写了一些简单的东西,它们可以为 DIV 设置动画,并在鼠标悬停时将其滑入和滑出以获取菜单图像。
问题是我似乎无法解决鼠标离开菜单图像并向下移动到菜单抽屉而不关闭抽屉的问题。我明白“为什么?”......我要离开触发动画的图像,在我进入抽屉之前关闭抽屉。如果我将悬停动画应用于抽屉容器,它只会在菜单下创建一个区域,该区域也会触发动画,我也不想要这样。jQuery 似乎变成了一个更复杂的问题。所有这一切都可以使用内联 Javascript 正常工作......您只需将鼠标从图像移动到相邻的打开抽屉而不触发关闭它的功能......就好像抽屉的内联“鼠标输入”取消了图像的“鼠标离开”。
有什么建议么?
谢谢!
编辑:
我相信我在从图像传递到抽屉时使用 .stop(true, false) 解决了这个问题。这甚至在动画开始之前就停止了动画。然后在启动正常动画之前进入图像时也是如此......这具有停止由离开抽屉并进入图像而触发的动画的效果,但在正常进入图像时也什么都不做。更多测试,然后我将发布一些示例代码。
编辑#2:
我让它使用“stop()”和“delay()”来控制动画,但如果你可以让鼠标更快地进入抽屉,它可以冻结抽屉的打开。安装时间为 150 毫秒。但现在设置为 300 毫秒以夸大问题。
相关代码张贴在这里...
jsfiddle.net/qPLVp/8/
编辑#3:
多亏了 Neil,它现在运行得很好。通过更快的动画速度,鼠标越过菜单图像并进入抽屉的情况将保持在最低限度。但是如果发生这种情况,抽屉将不会关闭,这比从鼠标下方关闭要好得多。
http://jsfiddle.net/elusien/PayFw/8/
编辑#4:
再次感谢 Neil,这是相同代码的更高效版本......