Estou tentando obter a posição X com jQuery de um evento touchstart, usado com a função ao vivo?
Ie
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
Agora, isso funciona com 'click' como o evento. Como diabos (sem usar o alfa jQuery Mobile) faço para obtê-lo com um evento de toque?
Alguma ideia?
Obrigado por qualquer ajuda.
Respostas:
Um pouco tarde, mas você precisa acessar o evento original, não o jQuery massageado. Além disso, como se trata de eventos multitoque, outras alterações precisam ser feitas:
Se você quiser outros dedos, poderá encontrá-los em outros índices da lista de toques.
ATUALIZAÇÃO PARA O JQUERY MAIS NOVO:
fonte
touchmove
.e.preventDefault()
notouchstart
manipulador de eventos.e.touches[0].pageX;
funcionou para mimEu uso esta função simples para projetos baseados em JQuery
exemplo:
espero que seja útil para você;)
fonte
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"))
?Tentei algumas das outras respostas aqui, mas originalEvent também foi indefinido. Após a inspeção, encontrou uma propriedade classificada TouchList (como sugerido por outro autor) e conseguiu chegar à página X / Y desta forma:
fonte
Se você não estiver usando jQuery ... você precisa acessar um dos eventos
TouchList
para obter umTouch
objeto que tenhapageX/Y
clientX/Y
etc.Aqui estão links para os documentos relevantes:
Estou usando
e.targetTouches[0].pageX
no meu caso.fonte
Verifique a referência do desenvolvedor Safari na classe Touch .
De acordo com isso, a página X / Y deve estar disponível - talvez você deva verificar a ortografia? certifique-se de que é
pageX
e nãoPageX
fonte