Próbuję uzyskać pozycję X za pomocą jQuery zdarzenia touchstart, używanego z funkcją na żywo?
To znaczy
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
Teraz to działa z „kliknięciem” jako zdarzeniem. Jak do licha (bez korzystania z alpha jQuery Mobile) mogę to osiągnąć dzięki zdarzeniu dotykowemu?
Jakieś pomysły?
Dzięki za wszelką pomoc.
Odpowiedzi:
Trochę późno, ale musisz uzyskać dostęp do oryginalnego zdarzenia, a nie do masowanego przez jQuery. Ponieważ są to zdarzenia wielodotykowe, należy wprowadzić inne zmiany:
Jeśli chcesz inne palce, możesz je znaleźć w innych indeksach listy dotknięć.
AKTUALIZACJA DLA NOWEGO JQUERY:
źródło
touchmove
.e.preventDefault()
wtouchstart
obsługi zdarzeń.e.touches[0].pageX;
mi sięUżywam tej prostej funkcji dla projektu opartego na JQuery
przykład:
mam nadzieję, że będzie to dla Ciebie przydatne;)
źródło
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"))
?Wypróbowałem tutaj kilka innych odpowiedzi, ale originalEvent również było niezdefiniowane. Po inspekcji znalazłem sklasyfikowaną właściwość TouchList (zgodnie z sugestią innego plakatu) i udało mi się dotrzeć do strony X / Y w ten sposób:
źródło
Jeśli nie używasz jQuery ... musisz uzyskać dostęp do jednego ze zdarzeń,
TouchList
aby uzyskaćTouch
obiekt, który mapageX/Y
clientX/Y
itp.Oto linki do odpowiednich dokumentów:
Używam
e.targetTouches[0].pageX
w moim przypadku.źródło
Sprawdź dokumentację dla programistów Safari w klasie Touch .
Zgodnie z tym strona X / Y powinna być dostępna - może warto sprawdzić pisownię? upewnij się, że tak jest
pageX
i niePageX
źródło