クリックイベントがあります:
$('#ddTestOverlay').on('click', function () {
$('#ddTestOverlay').toggle();
});
これは Android でトリガーされますが、これは問題です。iOS で正常に動作している (そして Android でもトリガーしている) jQuery などのイベントがtouchstart既にあるためです。touchendタッチ イベントとクリック イベントの両方がアクティブな場合、Android で要素をタップすると、それ自体が表示されてすぐに非表示になり、もう一度タップしても何も起こりません。ただし、クリック イベント コードをコメント アウトすると、Android で正常に動作します。問題は、デスクトップで動作する必要があることです。タッチ イベントを削除しようとしましたが、iOS でタップが機能しません。また、クリックイベントをmousedown変更せずに置き換えてみました。この問題を解決するにはどうすればよいですか?
ここに私の完全なjQueryがあります:
function handleOverlayInteraction() {
$('.mosaic-wrapper').on('mouseenter', function () {
$('#ddTestOverlay').show();
}).on('mouseleave', function () {
$('#ddTestOverlay').hide();
});
var dragged = false;
$('.mosaic-wrapper').on('touchstart', function () {
dragging = false;
});
$('.mosaic-wrapper').on('touchmove', function () {
dragging = true;
});
$('.mosaic-wrapper').on('touchend', function () {
if (dragging) {
return;
}
// Mobile single tap only
$('#ddTestOverlay').toggle();
});
$('#ddTestOverlay').on('click', function () {
$('#ddTestOverlay').toggle();
});
};