Javascript iPhone:span-click-donds';我工作不好

Javascript iPhone:span-click-donds';我工作不好,javascript,jquery,html,ios,iphone,Javascript,Jquery,Html,Ios,Iphone,当我想触按“箭头”以下拉菜单导航的第二级时,出现问题。 当我触摸箭头时,结果和我触摸页面时一样(例如哲学)。 箭头有css-->光标:指针; 在桌面版上,它工作正常 我使用iphone5。如果我触摸箭头并保持1秒钟,那么它工作正常。但如果我只碰它一次,它就会把我带到一页 //用于添加箭头的第一个js $(“.menu项有子项”)。每个(函数(){ $(this.prepend(“”); }); $(“.main menu.menu li”).first().addClass(“第一页项”);

当我想触按“箭头”以下拉菜单导航的第二级时,出现问题。 当我触摸箭头时,结果和我触摸页面时一样(例如哲学)。 箭头有css-->光标:指针; 在桌面版上,它工作正常

我使用iphone5。如果我触摸箭头并保持1秒钟,那么它工作正常。但如果我只碰它一次,它就会把我带到一页

//用于添加箭头的第一个js
$(“.menu项有子项”)。每个(函数(){
$(this.prepend(“”);
});
$(“.main menu.menu li”).first().addClass(“第一页项”);
//dropwdown子菜单的第二个js
$('.arrow')。打开(“单击”,函数(e){
if($(this).hasClass('opened')){
$(this.removeClass('opened');
$(this).parent().find('.sub菜单').slideToggle();
}否则{
$(this.addClass('opened');
$(this).parent().find('.sub菜单').slideToggle();
}
e、 停止传播();
});

由于iPhone是一款触摸设备,您应该使用触摸事件而不是点击事件

因此,你应该:

  • 检测设备是否为移动设备
  • 根据设备类型正确操作
  • 代码如下:

    function goArrow(e) {
        if ($(this).hasClass('opened')) {
            $(this).removeClass('opened');
            $(this).parent().find('.sub-menu').slideToggle();
        } else  {
            $(this).addClass('opened');
            $(this).parent().find('.sub-menu').slideToggle();
        }
        e.stopPropagation();
    }
    
    var TOUCH = "ontouchstart" in window;
    
    if (TOUCH) $('.arrow').on("touchstart", goArrow);
    else $('.arrow').on("click", goArrow);