Javascript 行为不端的子菜单(js或hover as touch)——奇怪的是,在JSFIDLE上没有复制(很好)

Javascript 行为不端的子菜单(js或hover as touch)——奇怪的是,在JSFIDLE上没有复制(很好),javascript,css,menu,Javascript,Css,Menu,在SO社区的帮助下,我将鼠标悬停激活的菜单扩展为触摸式菜单。然而,在Safari上,菜单通常根本不会激活,在桌面/笔记本电脑上使用Firefox和IE时,子菜单的行为异常。正如标题所说,JSFIDLE上的相同代码可以正常工作;故障主要发生在我的网站上 其中, 我相信这和上面的代码是一样的 报告的问题: iPhone touch上的Safari:菜单有时根本无法激活。 FF/IE桌面/FF/IE鼠标悬停+单击:选择子菜单项并返回用于返回时,原始页面的子菜单表现不佳。有时,页面打开时,子菜单已展开并

在SO社区的帮助下,我将鼠标悬停激活的菜单扩展为触摸式菜单。然而,在Safari上,菜单通常根本不会激活,在桌面/笔记本电脑上使用Firefox和IE时,子菜单的行为异常。正如标题所说,JSFIDLE上的相同代码可以正常工作;故障主要发生在我的网站上

其中,

我相信这和上面的代码是一样的

报告的问题:

iPhone touch上的Safari:菜单有时根本无法激活。 FF/IE桌面/FF/IE鼠标悬停+单击:选择子菜单项并返回用于返回时,原始页面的子菜单表现不佳。有时,页面打开时,子菜单已展开并选定了一个项,或者单击菜单时,一个大纲框住了先前选定的子菜单项

有时,JSFIDLE代码在Safari/iPhone上的错误行为如下:点击菜单,菜单展开;点击菜单外,菜单折叠到目前为止,OK。但再次点击菜单,子菜单将展开然后折叠。应该保持扩张

JS使用touchstart和slidedown/slideup模拟触摸屏的悬停状态。我不知道绑定是否错误,JS中引用了错误的css元素,或者是什么

一些JS是:

`$('body').bind('touchstart', function() {});
var down = function() {
$('ul.Menu li ul').slideDown(400) /* default is 400ms */
$('ul.Menu li').one('click', up)
}
var up = function() {
$('ul.Menu li ul').slideUp(400)
$('ul.Menu li').one('click', down)
}
$('ul.Menu li').one('click', function() {
down()
})`
我希望有人能找到一个简单的解决方案,可以在所有平台上工作


提前感谢。

如果有人甚至可以编辑JSFIDLE以可靠地演示问题,这将对社区有一定帮助。@DOC ASAREL:在JS中使用您的建议进行触发器、幻灯片下载和touchstart绑定。但是代码在Safari上失败了。你能调查一下会解决什么问题吗?菜单未处于活动状态,或在Safari上展开然后折叠。JSFIDLE上的代码似乎是一样的;失败仅限于在我的站点上。@z0r:也使用您的JS建议。见前面的评论。你能看看这个吗?