Javascript jQuery:防止长时间点击后触发单击事件(移动)

Javascript jQuery:防止长时间点击后触发单击事件(移动),javascript,jquery,Javascript,Jquery,对于移动设备,并没有像右键单击这样的操作,所以我想处理一个长时间的按键 我还需要一个正常的“点击”事件 对于长按处理,我找到了一个解决方案,但是当我添加onClick侦听器时,onClick会被激发,即使我只想激发long press事件 当longTap事件触发时,如何防止点击事件? 下面是代码+示例: var c=console.log.bind(console); (功能(){ $.fn.lontap=函数(选项){ 选项=$。扩展({ 延误:1000, onRelease:null }

对于移动设备,并没有像右键单击这样的操作,所以我想处理一个长时间的按键

我还需要一个正常的“点击”事件

对于长按处理,我找到了一个解决方案,但是当我添加onClick侦听器时,onClick会被激发,即使我只想激发long press事件

当longTap事件触发时,如何防止点击事件?

下面是代码+示例:

var c=console.log.bind(console);
(功能(){
$.fn.lontap=函数(选项){
选项=$。扩展({
延误:1000,
onRelease:null
},选项);
var eventType={
mousedown:“触摸启动”窗口中的“ontouchstart”:“mousedown”,
鼠标悬停:窗口中的“ontouchend”?“touchend”:“鼠标悬停”
};
返回此值。每个(函数(){
$(this).on(eventType.mousedown+'.lontap',function(){
$(此).data('touchstart',+新日期);
})
.on(eventType.mouseup+'.longtap',函数(e){
var now=+新日期,
than=$(this.data('touchstart');
现在-than>=options.delay&&options.onRelease&&options.onRelease.call(this,e);
});
});
};
})(jQuery);
$(“.long tap”).longTap({
延迟:1000,//非常长的点击
onRelease:函数(e){
c($(this).position(),e);
e、 停止即时复制();
e、 预防默认值();
警报('显示上下文菜单或其他内容:');
}
});
$('.long tap')。单击(函数(){
警报(“点击”);
})
.test{
宽度:200px;
高度:100px;
背景色:#DDD;
}

您可以用于右键单击事件:

$(document).on("contextmenu",function(e){
   e.preventDefault();
   // do the stuff
});

当您在移动设备中用手指长按时,将出现上下文菜单。

确实没有好方法执行此操作,您可以做的是测试是否在click事件处理程序的事件目标上注册了longtap事件:

$('.long-tap').click(function(){
    if ($(this).data('touchstart')) {
        return;
    }

    ...
});
总的来说,我认为应该重新考虑为触摸屏设备实现上下文菜单的一般方法


祝你好运

有这么多插件可以处理它,为什么要发明轮子呢?谢谢你,我只是忘了在这种情况下使用e.preventDefault()——所以浏览器(Android版的Chrome)会消耗事件并以某种方式中断代码(出现文本选择)。使用e.preventDefault()时,它就像一个符咒;)如果你更新你的答案,我会接受的