Est-il possible d'implémenter "appui long" en JavaScript (ou jQuery)? Comment?
(source: androinica.com )
HTML
<a href="" title="">Long press</a>
JavaScript
$("a").mouseup(function(){
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
return false;
});
javascript
jquery
jquery-ui
jquery-mobile
jquery-events
Randy Mayer
la source
la source
jQuery(...).longclick(function() { ... });
Réponses:
Il n'y a pas de magie «jQuery», juste des minuteries JavaScript.
la source
clearTimeout(pressTimer)
àmousemove
, à moins que je me manque quelque chose. Ce qui, certes, ne serait guère sans précédent.Sur la base de la réponse de Maycow Moura, j'ai écrit ceci. Cela garantit également que l'utilisateur n'a pas fait un clic droit, ce qui déclencherait une pression longue et fonctionnerait sur les appareils mobiles. DEMO
Vous devriez également inclure un indicateur utilisant des animations CSS:
la source
:hover
état est collant sur les appareils tactiles, peut-être que cela s'applique également ici.touchend
si je devais licencier l'OMI, il n'y a aucune raison de le coller quand c'est un code spécial pour les appareils tactiles, peut-être que j'essaierai quelque chose demain.Vous pouvez utiliser l' événement taphold de l'API mobile jQuery.
la source
J'ai créé un événement de presse longue (JavaScript pur 0,5k) pour résoudre ce problème, il ajoute un
long-press
événement au DOM.Écoutez un
long-press
sur n'importe quel élément:Écoutez un
long-press
sur un élément spécifique :Fonctionne dans les applications mobiles IE9 +, Chrome, Firefox, Safari et hybrides (Cordova et Ionic sur iOS / Android)
Démo
la source
Bien que cela semble assez simple pour être implémenté par vous-même avec un délai d'expiration et quelques gestionnaires d'événements de souris, cela devient un peu plus compliqué lorsque vous considérez des cas comme cliquer-glisser-relâcher, prenant en charge à la fois appuyer et appuyer longuement sur le même élément et travailler avec des appareils tactiles comme l'iPad. J'ai fini par utiliser le plugin jQuery longclick ( Github ), qui s'occupe de ça pour moi. Si vous devez uniquement prendre en charge les appareils à écran tactile tels que les téléphones mobiles, vous pouvez également essayer l' événement jQuery Mobile taphold .
la source
plugin jQuery. Mettez juste
$(expression).longClick(function() { <your code here> });
. Le deuxième paramètre est la durée de maintien; le délai d'expiration par défaut est de 500 ms.la source
Pour les développeurs multiplateformes (Remarque Toutes les réponses données jusqu'à présent ne fonctionneront pas sur iOS) :
Mouseup / down semblait fonctionner correctement sur Android - mais pas sur tous les appareils (samsung tab4). Ne fonctionnait pas du tout sur iOS .
Des recherches plus poussées, il semble que cela soit dû à l'élément sélectionné et que le grossissement natif interrompt l'auditeur.
Cet écouteur d'événements permet d'ouvrir une image miniature dans un modal d'amorçage, si l'utilisateur conserve l'image pendant 500 ms.
Il utilise une classe d'image réactive montrant ainsi une version plus grande de l'image. Ce morceau de code a été entièrement testé sur (iPad / Tab4 / TabA / Galaxy4):
la source
DEMO
la source
La réponse de Diodeus est géniale, mais elle vous empêche d'ajouter une fonction onClick, elle n'exécutera jamais la fonction hold si vous mettez un onclick. Et la réponse du Razzak est presque parfaite, mais il exécute la fonction de maintien uniquement sur la souris, et généralement, la fonction s'exécute même si l'utilisateur continue de tenir.
Alors, j'ai rejoint les deux et j'ai fait ceci:
la source
Pour les navigateurs mobiles modernes:
https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu
la source
bind()
jquery 1.7+ =on()
andunbind()
=off()
Vous pouvez définir le délai d'expiration de cet élément en appuyant sur la souris et l'effacer en haut de la souris:
Avec cela, chaque élément obtient son propre délai d'expiration.
la source
$(this).mouseup(function(){});
ne supprime pas le gestionnaire d'événements, il en ajoute un autre. Utilisez.unbind
plutôt.off()
maintenant au lieu de délier.Vous pouvez utiliser le taphold de jquery-mobile. Incluez le jquery-mobile.js et le code suivant fonctionnera correctement
la source
Le plus élégant et le plus propre est un plugin jQuery: https://github.com/untill/jquery.longclick/ , également disponible en packacke: https://www.npmjs.com/package/jquery.longclick .
Bref, vous l'utilisez comme ceci:
L'avantage de ce plugin est que, contrairement à certaines des autres réponses ici, les événements de clic sont toujours possibles. Notez également qu'un clic long se produit, tout comme un appui long sur un appareil, avant la souris. Donc, c'est une fonctionnalité.
la source
Pour moi, cela fonctionne avec ce code (avec jQuery):
la source
Vous pouvez vérifier l’heure d’identification du clic ou de la pression longue [jQuery]
la source
comme ça?
la source
Vous pouvez utiliser les
jquery
événements Touch. ( voir ici )la source
J'avais besoin de quelque chose pour les événements clavier de longue durée, alors j'ai écrit ceci.
la source
Je pense que cela peut vous aider:
la source