Frage

Ich bin Bindung Live-Events auf die Links in meinem PhoneGap App. Das Ereignis wird erfolgreich (von alert()ing bestätigt), aber es scheint, jede Berührung Daten nicht an das Ereignisobjekt angebracht ist, wie es sein sollte. Dies geschieht auf allen Touch-Ereignisse -. touchstart, touchmove und touchend

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

Irgendwelche Ideen? Am I SOL mit jQuery.live ()?

War es hilfreich?

Lösung

Die Touch-Ereignisse werden derzeit nicht unterstützt von Events / Live .

Aus der Dokumentation:

  

Mögliche Ereigniswerte: Klicken Sie,   dblclick, mousedown-, mouseup,   mousemove-, Mouseover, mouseout,   keydown, keypress, keyup

     

Zur Zeit nicht unterstützt: Unschärfe, Fokus,   MouseEnter-, mouseleave, ändern einreichen

Sie möchten klicken versuchen, zu prüfen, zu verwenden, wenn das Ihre Bedürfnisse anzupassen, oder Sie können wechseln Sie mit livequery , die es unterstützen wird wahrscheinlich. (Livequery ist, was Live-basierte ursprünglich auf, ich bin nicht sicher, warum es nicht alle die gleichen Ereignisse unterstützen)

Andere Tipps

Eigentlich kann man die .live Methode verwenden. Sie haben nicht die event.touches Eigenschaft wegen, wie jQuery Ereignisse intern behandelt. Um zu „reparieren“ Ereignisse, jQuery Klone das Ereignis. so ist es nur Kopien über eine begrenzte Anzahl von Eigenschaften aus Leistungsgründen zu tun. Sie können jedoch immer noch das ursprüngliche Ereignis zugreifen Objekt über die event.originalEvent Eigenschaft.

So Ihr Beispielcode müsste wie folgt aussehen:

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

Das sind die Eigenschaften, die über kopiert werden: http: / /github.com/jquery/jquery/blob/master/src/event.js#L411

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top