Domanda Proprietà evento touchend


Se catturo tutti gli eventi touchend dai dispositivi mobili con:

$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...

Ho bisogno di ottenere il touch.screenX, touch.screenY, touch.clientX e touch.clientX dal parametro e. Tutti gli esempi che ho visto suggeriscono che e.touches sarà una raccolta e puoi ottenere i dettagli con il tocco e.touches[0]. Nei miei test su un ipad, e.touches è sempre indefinito. Non sto usando alcun plugin jQuery.

Anche provato e.targetTouches, che è anche indefinito.

Qualcuno può aiutare?


44
2017-08-25 14:55


origine


risposte:


In realtà, i tocchi rilasciati si troveranno nell'array changedTouches, ovvero:

e.changedTouches[0].pageX // get the end x page coordinate for a released touch

Penso che questo sia leggermente più affidabile rispetto alla proprietà originalEvent.

Puoi leggere di più su changedTouches qui: http://www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent


95
2018-04-09 20:04



La proprietà touches è un oggetto TouchList. Puoi vedere il riferimento alla classe TouchList Qui.

Se controlli la sua proprietà length con questo codice di esempio su #log div:

$('#element').bind('touchstart', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchmove', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

$('#element').bind('touchend', function(event) 
{
    $('#log').append(event.originalEvent.touches.length+'<br/>');
});

Otterrai 1 mentre esegui touchstart e touchmove, 0 quando esegui touchend. È per questo che ottieni indefinito da e.touches[0].


10
2017-11-01 16:00