web-dev-qa-db-fra.com

touchstart et touchend dans jQuery?

J'utilise actuellement les éléments suivants pour chaque élément pour lequel je souhaite changer de classe tactile:

ontouchstart="$(this).addClass('select');" ontouchend="$(this).removeClass('select');"

Je me demandais s'il y avait quelque chose comme ça ?:

$("#element").touchstart(function(){
    $(this).addClass('select');
},
function(){
   $(this).removeClass('select');
});

Que je pourrais énumérer tous les éléments que je veux avoir cette propriété. J'ai essayé tellement de choses et je ne peux pas le faire fonctionner.

8
Olokoo

J'ai fini par utiliser ceci:

$('#nav li').bind('touchstart', function(){
    $(this).addClass('select');
}).bind('touchend', function(){
    $(this).removeClass('select');
});
15
Olokoo

Sans JQUERY:

element.addEventListener('touchstart',function(e) {
 e.currentTarget.className = "select";
});

Avec JQUERY

$('#nav li').on('touchstart', function(){
    $(this).addClass('select');
}

En fait, on () obtient de meilleures performances que bind (), vérifiez documentation

11
Reign.85

Je pense que vous devez utiliser jQuery Mobile . Il a quelques événements normalisés, qui sont très probablement ce dont vous avez besoin. Voici une liste d'événements spéciaux issus de la référence API de jQuery Mobile: petit lien .

Vous vous souciez de ceux-ci:

vmousedown

Normalized event for handling touchstart or mousedown events

vmousemove

Normalized event for handling touchmove or mousemove events

vmouseup

Normalized event for handling touchend or mouseup events
1
Chris

Pourquoi n'utilisez-vous pas la pseudo-classe :hover pour cela? Il me semble qu’il s’agit d’un changement temporaire des règles CSS de l’élément nav_li.

0
WeP