Событие клика не будет зарегистрировано в iPad - PullRequest
0 голосов
/ 21 сентября 2011

Хорошо, я создаю сайт галереи для iPad.Он должен быть в состоянии провести, и когда вы нажимаете на миниатюры, он загружает изображения галереи с помощью AJAX.

HTML выглядит примерно так:

<section id="col1">
  <nav>
    <div class="appGallery">
      <div class="imageHandler"></div>
      <ul>
        <li><a href="1.html"><img src="1.jpg" alt="" /></a></li>
        <li><a href="2.html"><img src="2.jpg" alt="" /></a></li>
        <li><a href="3.html"><img src="3.jpg" alt="" /></a></li>
        <li><a href="4.html"><img src="4.jpg" alt="" /></a></li>
      </ul>
    </div>
  </nav>
</section>

Я использую пальцемплагин и в основном то, что imageHandler делает, чтобы отслеживать движение (события касания / мыши).У него более высокий z-индекс, который переопределяет неупорядоченный список, так что это в основном означает, что ссылка 'a' не будет работать.

Я написал совершенно новый алгоритм для определения, по каким пиктограммам нажимают $'# col1 nav') в зависимости от высоты и event.pageY.Мой алгоритм отлично работает на настольном компьютере, но не на iPad.Событие click просто не регистрируется.

Вот как выглядит JavaScript:

var dragging = false;

imageHandler.bind('touchmove', function(event) {
  dragging = true;
});

imageHandler.bind('touchend', function(event) {
  var touch = event.originalEvent.touches[0]  ||  event.originalEvent.changedTouches[0];

  if (dragging) {        
    //swipe column
    dragging = false;
  }
  else {
    //I've done some testing myself by including an alert() here, it pops out.
    $('#col1 nav').click(function(event) {
      //but when I insert and alert() here, nothing happens
      var touch = event.originalEvent.touches[0]  ||  event.originalEvent.changedTouches[0];

      //my algorithm to select the thumbnails using touch.pageY
      //ajax using .load
    });
    dragging = false;
  }
  return false;
});

Кто-нибудь знает, что не так?

1 Ответ

0 голосов
/ 21 сентября 2011

Похоже, вы связываете это внутри события "touchend". Так что щелчок регистрируется только после того, как вы перестаете перетаскивать

Вы пытались связать его вне функции с помощью живого события? Вот так:

$('#col1 nav').live("click", function(event) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...