我试图检测mouseup或touchend事件,而没有它发射两次。完整的示例在这里:preventDefault()不停止在Android上的mouseup事件
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#t").on("touchend mouseup", function(e){$("body").append(e.type + "<br>"); e.preventDefault();});
});
</script>
</head>
<body>
<div id="t" style="position: absolute; left: 200px; width: 200px; height: 200px; background: blue;"></div>
</body>
</html>
在平板电脑上,在touchend事件触发,然后再延迟一段时间后,鼠标松开事件触发。所以我包含e.preventDefault()行,并根据需要在iPad上停止mouseup事件。但它对Android没有影响。这两件事仍然发生。使用“返回false”,stopPropagation()和/或stopImmediatePropagation()也没有效果。请注意,我可以删除touchend事件,但我不希望平板电脑上的延迟等待mouseup启动。我需要为非平板设备包含mouseup。我也不想测试触摸功能,然后解除鼠标支持,因为有人可以同时拥有支持触摸和鼠标的笔记本电脑并使用它们。我只想让Android停止触发mouseup事件。
你可以尝试从回调中返回false吗? – bitoiu
@bitoiu,我在文章中提到“return false”。它也没有工作。 – kbriggs