Javascript jQuery在Firefox中向下滑动,然后自行向上滑动

Javascript jQuery在Firefox中向下滑动,然后自行向上滑动,javascript,jquery,firefox,Javascript,Jquery,Firefox,我有这样的代码,可以在触摸手机菜单时向下滑动,但不知何故,只有在Firefox中,div总是自动立即备份 $('#burger').on('click touchstart', function (e) { e.preventDefault(); if (jQuery('#mobile-menu').is(":hidden")) { jQuery('body').css('position','relative'); jQuery('.page')

我有这样的代码,可以在触摸手机菜单时向下滑动,但不知何故,只有在Firefox中,div总是自动立即备份

$('#burger').on('click touchstart', function (e) {
    e.preventDefault();
    if (jQuery('#mobile-menu').is(":hidden")) {
        jQuery('body').css('position','relative');
        jQuery('.page').css({'overflow':'hidden','position':'fixed'});
        jQuery('#mobile-menu').slideDown('slow');
    } else {
        jQuery('#mobile-menu').slideUp('slow');
        jQuery('.page').css({'overflow':'visible','position':'static'});
        jQuery('body').css('position','static');
    }
    return false;
});

我怀疑这是一个Firefox bug;如果是这种情况,并且您需要一个不那么优雅但工作正常的补丁,那么您可以尝试抑制重复事件,如果它们在这一次之后发生得太快

//如果为true,则忽略该事件
var stifleEvent=假;
$(#burger')。在('单击touchstart',函数(e){
如果(刚性){
返回false;
}
如果(jQuery(“#移动菜单”)。是(“:hidden”)){
$('body').css('position','relative');
$('.page').css({'overflow':'hidden','position':'fixed'});
$(“#移动菜单”)。向下滑动(“慢速”);
}否则{
$(“#移动菜单”).slideUp('slow');
$('.page').css({'overflow':'visible','position':'static'});
$('body').css('position','static');
}
//在接下来的10毫秒内忽略更多此事件
stifleEvent=true;
setTimeout(()=>{stifleEvent=false;},10);
返回false;
});

滑动菜单
| | |

尝试添加
e.stopPropagation()
@tavnab返回false会自动执行此操作。我怀疑
单击
touchstart
事件都被发送。其中一个打开菜单,另一个关闭菜单。你确定你需要这两个事件吗?@Barmar啊,是的,我错过了
返回false
。这可能是firefox的一个错误,删除点击就可以了。谢谢。不幸的是,这不起作用。到目前为止,删除单击是唯一的诀窍。你是对的;
touchstart
单击之间的时间可能与用户抬起手指所需的时间一样长。