0

クリックイベントがあります:

  $('#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();
  });
};
4

1 に答える 1