こちら自己解決しました。
aタグでなくdivタグであれば長押ししてもブラウザメニューが表示されないので、divにした上で、画面遷移はJavascriptで遷移させる様にしました。
ただし普通にtouchendにイベントをハンドルしただけでは長押しした後に指を離したり、タッチ後に指を動かしても遷移してしまうので、touchendでハンドルするイベントに、「touchstartした時の座標から◯px以内の座標で、かつ◯秒以内の時間しか経ってない時に指を離した時のみ」と言う条件で遷移するイベントを実行する様にしました。
以下コードです。
lang
1 $hoge.on('touchstart', function() {
2 var touchPointX = event.touches[0].pageX;
3 var touchPointY = event.touches[0].pageY;
4 var pointMoveFlag = false;
5 var modalOpenFlag = false;
6 var timer = setTimeout( function() {
7 //長押しした時に実行するイベント
8 modalOpenFlag = true;
9 }, 300); //300ms以上タッチしてれば長押しと判断
10
11 function clearFunction() {
12 clearTimeout(timer);
13 }
14
15 $hoge.on('touchend touchmove touchcancel', clearFunction);
16
17 $hoge.on('touchmove', function() {
18 var movePointX = event.touches[0].clientX;
19 var movePointY = event.touches[0].clientY;
20 var dist = Math.sqrt(Math.pow(movePointX - touchPointX, 2) + Math.pow(movePointY - touchPointY, 2));
21 if(dist >= 10) { //指が10px以上移動していたらタップと判断しない
22 pointMoveFlag = true;
23 }
24 });
25
26 $hoge.on('touchend', function() {
27 if(pointMoveFlag === false && modalOpenFlag === false) {
28 //タップした時のイベント
29 }
30 });
31 });
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。