mouseup または touchend イベントを 2 回発生させずに検出しようとしています。ここに完全な例:
<!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 イベントを削除することもできますが、マウスアップが発生するのを待っているタブレットの遅延は望ましくないことに注意してください。また、タブレット以外のデバイスにはマウスアップを含める必要があります。また、誰かがタッチとマウスの両方をサポートし、両方を使用できるラップトップを持っている可能性があるため、タッチ機能をテストしてからマウスサポートをアンバインドしたくありません。Android で mouseup イベントの発生を停止したいだけです。