Ich versuche, die X-Position mit jQuery eines Touchstart-Ereignisses zu ermitteln, das mit der Live-Funktion verwendet wird.
Das heißt.
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
Dies funktioniert nun mit "Klick" als Ereignis. Wie um alles in der Welt (ohne das alpha jQuery Mobile) bekomme ich es mit einem Touch-Ereignis?
Irgendwelche Ideen?
Vielen Dank für jede Hilfe.
Ein bisschen spät, aber Sie müssen auf das ursprüngliche Ereignis zugreifen, nicht auf das mit jQuery massierte. Da es sich um Multitouch-Ereignisse handelt, müssen noch weitere Änderungen vorgenommen werden:
$('#box').live('touchstart', function(e) {
var xPos = e.originalEvent.touches[0].pageX;
});
Wenn Sie andere Finger möchten, können Sie diese in anderen Indizes der Berührungsliste finden.
UPDATE FÜR NEUERE JQUERY:
$(document).on('touchstart', '#box', function(e) {
var xPos = e.originalEvent.touches[0].pageX;
});
Ich benutze diese einfache Funktion für JQuery-basierte Projekte
var pointerEventToXY = function(e){
var out = {x:0, y:0};
if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
out.x = touch.pageX;
out.y = touch.pageY;
} else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') {
out.x = e.pageX;
out.y = e.pageY;
}
return out;
};
beispiel:
$('a').on('mousedown touchstart', function(e){
console.log(pointerEventToXY(e)); // will return obj ..kind of {x:20,y:40}
})
hoffe das wird nützlich für dich;)
Ich habe einige der anderen Antworten hier ausprobiert, aber originalEvent war ebenfalls undefiniert. Bei der Überprüfung wurde eine mit TouchList klassifizierte Eigenschaft gefunden (wie von einem anderen Poster vorgeschlagen), und es gelang, auf folgende Weise zu pageX/Y zu gelangen:
var x = e.changedTouches[0].pageX;
Wenn Sie jQuery nicht verwenden, müssen Sie auf eines der TouchList
s des Ereignisses zugreifen, um ein Touch
-Objekt mit pageX/Y
clientX/Y
etc.
Hier sind Links zu den relevanten Dokumenten:
Ich benutze e.targetTouches[0].pageX
in meinem Fall.
Überprüfen Sie Safari Entwicklerreferenz auf Touch-Klasse .
Demnach sollte pageX/Y verfügbar sein - vielleicht sollten Sie die Rechtschreibung überprüfen? stelle sicher, dass es pageX
und nicht PageX
ist