Ich versuche mit jQuery die X-Position eines Touchstart-Ereignisses zu ermitteln, das mit der Live-Funktion verwendet wird.
Dh
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
Dies funktioniert nun mit 'click' als Ereignis. Wie um alles in der Welt (ohne Alpha jQuery Mobile) erhalte ich es mit einem Touch-Ereignis?
Irgendwelche Ideen?
Vielen Dank für jede Hilfe.
Antworten:
Etwas spät, aber Sie müssen auf das ursprüngliche Ereignis zugreifen, nicht auf das massierte jQuery-Ereignis. Da es sich um Multi-Touch-Ereignisse handelt, müssen weitere Änderungen vorgenommen werden:
Wenn Sie andere Finger möchten, können Sie diese in anderen Indizes der Berührungsliste finden.
UPDATE FÜR NEUERE JQUERY:
quelle
touchmove
.e.preventDefault()
intouchstart
Event - Handler.e.touches[0].pageX;
für mich gearbeitetIch benutze diese einfache Funktion für JQuery-basierte Projekte
Beispiel:
hoffe das ist nützlich für dich;)
quelle
out.x = e.pageX || e.originalEvent.touches[0].pageX;
if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
->if (e.type.startsWith("touch"))
?Ich habe hier einige der anderen Antworten ausprobiert, aber originalEvent war auch undefiniert. Bei der Inspektion wurde eine TouchList-klassifizierte Eigenschaft gefunden (wie von einem anderen Poster vorgeschlagen) und es gelang, auf folgende Weise zu pageX / Y zu gelangen:
quelle
Wenn Sie jQuery nicht verwenden, müssen Sie auf eines der Ereignisse zugreifen
TouchList
, um einTouch
Objekt mitpageX/Y
clientX/Y
usw. zu erhalten.Hier sind Links zu den relevanten Dokumenten:
Ich benutze
e.targetTouches[0].pageX
in meinem Fall.quelle
Überprüfen Sie die Safari- Entwicklerreferenz für die Touch-Klasse .
Demnach sollte pageX / Y verfügbar sein - vielleicht sollten Sie die Rechtschreibung überprüfen? Stellen Sie sicher, dass es ist
pageX
und nichtPageX
quelle