我正在尝试检测 mouseup 或 touchend 事件而不触发两次。完整的例子在这里:
<!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 事件,然后在延迟后触发 mouseup 事件。所以我包含了 e.preventDefault() 行,它可以根据需要在 iPad 上停止 mouseup 事件。但它对Android没有影响。这两个事件仍然发生。使用“return false”、stopPropagation() 和/或 stopImmediatePropagation() 也没有效果。请注意,我可以只删除 touchend 事件,但我不希望平板电脑延迟等待 mouseup 触发。而且我需要为非平板设备包括 mouseup 。我也不想测试触摸功能,然后取消绑定鼠标支持,因为有人可以拥有一台同时支持触摸和鼠标的笔记本电脑并同时使用它们。我只想让 Android 停止触发 mouseup 事件。