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.
J'ai fini par utiliser ceci:
$('#nav li').bind('touchstart', function(){
$(this).addClass('select');
}).bind('touchend', function(){
$(this).removeClass('select');
});
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
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
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
.