J’ai eu besoin d’une liste “triable” par drag & drop sous jQuery Mobile qui fonctionne sur mon smartphone. Ne voulant par réinventer la roue, j’ai piocher le code dans différentes librairies pour arriver à un résultat qui fonctionne sous Android 4 sur mon Nexus S avec le navigateur d’Android. Vos retours sur d’autres smartphones, sur d’autres navigateurs m’interesse. Un petit retour sur mon compte twitter (@forresst17) sera apprécié. Je signalerais vos retours sur cet article.
Testé et approuvé sur :
Nexus S avec Android 4.0 (mon smartphone)
iPad2 avec IOS 5.1 (Merci Poulpator)
Toshiba AT200 avec Android 4.0.3 (Merci zboub_2000)
J’ai fait aussi des tests concluants sur plusieurs navigateurs de bureau :
Chrome 12
Firefox 12 & 13
Voici le lien de la Démo.
###1 - Créez une liste sous jQuery Mobile
Tout d’abord nous allons créer une page jQuery Mobile contenant une liste :
Remarque : j’ai rajouté id=”sortable” sur la balise ul, cela va nous servir pour le point suivant.
###2 - Ajoutez les fonctionnalités sortable de jQuery UI
Je me suis inspiré de la Démo du site de jQuery UI
Astuce : Si vous ne voulez pas utiliser la totalité de jQuery UI, vous pouvez récupérer sur la page de téléchargement de jQuery UI que les composants nécessaires pour notre exemple, c’est à dire :
###3 - Ajoutez jQuery UI Touch Punch pour que cela fonctionne sur les appareils tactiles
La liste triable fonctionne correctement sur un navigateur de bureau. Mais si vous voulez faire un test sur votre smartphone, cela ne fonctionne pas. Il existe un petit plugin à jQuery UI qui permet de simuler les événements tactiles pour que le drag & drop fonctionnent sur les smartphones. Cet outil c’est jQuery UI Touch Punch.
Veuillez télécharger le JS minifié et le sauvegarder dans le même répertoire que votre fichier HTML. Puis ajoutez le JS dans votre page HTML.
La liste triable fonctionne maintenant correctement sur votre smartphone.
###4 - Conclusion
J’espère que cela pourra vous servir dans vos futurs développements. Il faut bien être conscient que c’est une astuce et que ce n’est pas la meilleure solution qui existe. Le fichier JS de jQuery UI est assez lourd, vous pouvez tout de même le diminuer en prenant seulement les composants cités au dessus. Mais je pense que c’est la mise oeuvre la plus simple en attendant une autre solution …