Javascript 菜单单击不';t在移动Chrome和Safari上工作

Javascript 菜单单击不';t在移动Chrome和Safari上工作,javascript,drop-down-menu,menu,responsive,Javascript,Drop Down Menu,Menu,Responsive,当我在mobile chrome或safari或chrome dev mobile responsive tools中打开此文件时,单击不起作用。只有当我按住“点击菜单”时,子菜单才会显示。为什么? 在firefox mobile上,一切正常 (函数($,未定义) { var开放=[]; 变量选项={ 选择器:'.dropdown', 切换:“下拉切换”, 打开:“下拉打开”, 鸟巢:是的 }; $(文档).on('click.dropdown touchstart.dropdown',函数

当我在mobile chrome或safari或chrome dev mobile responsive tools中打开此文件时,单击不起作用。只有当我按住“点击菜单”时,子菜单才会显示。为什么? 在firefox mobile上,一切正常

(函数($,未定义)
{
var开放=[];
变量选项={
选择器:'.dropdown',
切换:“下拉切换”,
打开:“下拉打开”,
鸟巢:是的
};
$(文档).on('click.dropdown touchstart.dropdown',函数(e)
{
//如果单击来自目标下拉列表之外,请关闭最后打开的下拉列表
if(open.length&(!opts.nest | |!open[open.length-1].find(e.target.length))
{
open.pop().removeClass(opts.open);
}
var$this=$(e.target);
//如果目标是下拉列表,则将其切换。。。
if($this.hasClass(opts.toggle))
{
e、 预防默认值();
$this=$this.closest(opts.selector);
if(!$this.hasClass(opts.open))
{
open.push($this.addClass(opts.open));
}
其他的
{
open.pop().removeClass(opts.open);
}
}
});
})(jQuery)
.Row
{
显示:表格;
宽度:100%;
表布局:固定;
边界间距:10px;
}
.栏目
{
显示:表格单元格;
背景色:红色;
}
.下拉列表{
位置:相对位置;
最小宽度:100%;
背景:#ccc;
显示:内联块;
}
.下载{
显示:块;
文字装饰:无;
颜色:#333;
填充:20px;
}
/*拨动*/
.下拉按钮.下拉开关{
填充:0;
填充:20px;
}
/*下拉列表*/
.下拉菜单{
位置:绝对位置;
最高:100%;
右:0;
左:0;
显示:无;
保证金:0;
填充:0;
列表样式类型:无;
背景:#ccc;
}
/*选择权*/
.下拉菜单.选项a{
}
.下拉菜单.选项a:悬停{
背景色:#aaa;
}
/*打开*/
.下拉打开{
z指数:400;
}
.下拉菜单打开>.下拉菜单{
显示:块;
}
@仅介质屏幕和(最小宽度:600px){
.下拉菜单:悬停,
.下拉切换:悬停+ul{
显示:块;z索引:99999999;
}
}
@仅介质屏幕和(最大宽度:600px){
正文{背景:红色;}
.栏目{
显示:块;页边距底部:10px;
}
}


在我看来,有什么东西触发了您的事件回调两次。例如,一些浏览器可能会单独触发点击和触摸事件,从而打开和关闭菜单

我没有时间彻底检查您的代码,但我的假设是,如果您更改了事件处理程序的参数,那么应该可以工作

尝试从已处理的事件中删除
单击
,然后从那里获取它

$(document).on('touchstart.dropdown', function(e)
显然,完全删除单击处理程序在您的应用程序中可能是无效的 因此,您可以将其与触摸事件支持检测等混合使用