jQuery live() удаляет атрибуты событий касания iPhone?

StackOverflow https://stackoverflow.com/questions/671498

  •  21-08-2019
  •  | 
  •  

Вопрос

Я привязываю живые события к ссылкам в моем PhoneGap приложение.Событие срабатывает успешно (подтверждено alert()ing), но кажется, что какие-либо данные касания не прикреплены к объекту события, как должно быть.Это происходит при всех событиях касания - touchstart, touchmove, и touchend.

$('a').live('touchend', function(event) {
  event.preventDefault();
  alert(event.touches.length); // event.touches should be populated!
});

Есть идеи?Я SOL с jQuery.live()?

Это было полезно?

Решение

События касания в настоящее время не поддерживаются События/живые трансляции.

Из документации:

Возможные значения события:Нажмите, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup

В настоящее время не поддерживается:размытие, фокусировка, мышь, мышцы, изменение, представление

Возможно, вы захотите попробовать использовать щелчок, если это соответствует вашим потребностям, или вы можете переключиться на использование живой запрос, который, вероятно, поддержит это.(livequery — это то, на чем изначально был основан Live, я не уверен, почему он не поддерживает все те же события)

Другие советы

На самом деле вы можете использовать метод .live.У вас нет свойства event.touches из-за внутренней обработки событий jQuery.Чтобы «исправить» события, jQuery клонирует событие.При этом он копирует только ограниченное количество свойств из соображений производительности.Однако вы по-прежнему можете получить доступ к исходному объекту события через свойство event.originalEvent.

Таким образом, ваш пример кода должен выглядеть следующим образом:

$('a').live('touchend', function(event) {
  event.preventDefault();
  console.log(event.originalEvent.touches.length);
});

Вот свойства, которые копируются: http://github.com/jquery/jquery/blob/master/src/event.js#L411

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top