Wenn ich alle Touchend-Ereignisse von Mobilgeräten abfange mit:
$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...
Ich muss touch.screenX, touch.screenY, touch.clientX und touch.clientX aus dem e-Parameter abrufen. Alle Beispiele, die ich gesehen habe, deuten darauf hin, dass e.touches eine Sammlung sein wird, und Sie können mit auf die Berührungsdetails zugreifen e.touches[0]. In meinen Tests auf einem iPad, e.touches ist immer undefiniert. Ich verwende keine jquery-Plugins.
Habe auch e.targetTouches versucht, das ebenfalls undefiniert ist.
Kann jemand helfen?
Gopherkhan
Tatsächlich werden freigegebene Berührungen im Array “changedTouches” gefunden, dh:
e.changedTouches[0].pageX // get the end x page coordinate for a released touch
Ich denke, das ist etwas zuverlässiger als das Durchlaufen der originalEvent-Eigenschaft.
Ich stimme zu, das ist die richtige Lösung. Ich selbst verwende dies, da es die richtigen Daten benötigt und warum mehr APIs als nötig verwechselt werden.
– Koch Pharao
7. Dezember 2012 um 22:42 Uhr
Dies ist bei Android nicht der Fall, wenn Sie jQuery verwenden. $(‘#test’).on(‘touchend’, function (evt) { console.log(evt.changedTouches); }); ist leer, das Gleiche gilt für $(‘#test’).bind(‘touchend’… aber wenn Sie jquery aus der Gleichung herausschneiden und getElementBy und addEventListener ausführen, funktioniert es.
– WORMSS
29. August 2014 um 0:12 Uhr
@WORMSS: Die Antwort ist in Bezug auf die jQuery-Eigenschaft event.originalEvent unklar. Dieses Problem wird hier speziell angesprochen – stackoverflow.com/questions/14999724/…
– Nolo
23. September 2014 um 16:17 Uhr
e.originalEvent.changedTouches[0].pageX ist die richtige Antwort! [EDITED 20-11-2017]
– devpelux
20. November 2017 um 17:41 Uhr
Damit endete mein wochenlanger Kampf. Vielen Dank
– thednp
3. Januar 2020 um 20:13 Uhr
javibilbo
Die Eigenschaft touches ist ein TouchList-Objekt. Sie können die Klassenreferenz TouchList sehen hier.
Wenn Sie die Eigenschaft length mit diesem Beispielcode auf #log div überwachen: