Je ne comprends pas comment utiliser la propriété event.touches. Par exemple, pour obtenir le nombre de doigts sur un iPad / iPhone, vous devez utiliser
event.touches.length
Alors pourquoi cet exemple de code ne fonctionne-t-il pas?
$('.image').bind('touchstart', function(event) { alert(event.touches.length); });
Mais cela fonctionne:
$('.image').bind('touchstart', function() { alert(event.touches.length); });
Ne devrait-ce pas être l’inverse?
Dans le second cas, vous vous rabattez sur l’object event
global (et brut) du navigateur plutôt que sur l’object spécifique à jQuery (sur les navigateurs prenant en charge un event
global, tous ne le font pas – Firefox non une chose de Microsoft que seuls quelques-uns ont copié).
Il semble que jQuery ne transmette pas la propriété touches
dans son object événement personnalisé. Comme décrit dans la documentation de l’object event , vous pouvez utiliser event.originalEvent
dans votre premier exemple pour accéder aux “propriétés spéciales” dont il dispose tout en bénéficiant des avantages de l’object événement normalisé jQuery, par exemple:
$('.image').bind('touchstart', function(event) { alert(event.originalEvent.touches.length); });
… ou vous pouvez dire à jQuery de copier cette propriété en le faisant une fois au début de votre script:
jQuery.event.props.push("touches");
… après quoi votre premier exemple devrait commencer à fonctionner.
Note latérale: Si vous n’utilisez pas jQuery Touch , vous pouvez le regarder. Mon hypothèse est qu’en plus des autres choses qu’il fait, il ajoute la propriété touches
comme indiqué ci-dessus (mais ce n’est qu’une hypothèse).