Comment faire en sorte que la fonctionnalité de tri de jQuery-UI fonctionne sur iPad et autres appareils tactiles?
http://jqueryui.com/demos/sortable/
J'ai essayé d'utiliser event.preventDefault();
, event.cancelBubble=true;
Et event.stopPropagation();
avec les événements touchmove
et scroll
, mais le résultat est que la page ne défile plus.
Des idées?
Trouvé une solution (seulement testé avec iPad jusqu'à maintenant!)!
http://touchpunch.furf.com/content.php?/sortable/default-functionality
Pour que sortable
fonctionne sur mobile. J'utilise touch-punch comme ceci:
$("#target").sortable({
// option: 'value1',
// otherOption: 'value2',
});
$("#target").disableSelection();
Prenez note de l'ajout de disableSelection();
après la création de l'instance pouvant être triée.
Tom, j'ai ajouté le code suivant à l'événement mouseProto._touchStart:
var time1Sec;
var ifProceed = false, timerStart = false;
mouseProto._touchStart = function (event) {
var self = this;
// Ignore the event if another widget is already being handled
if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
return;
}
if (!timerStart) {
time1Sec = setTimeout(function () {
ifProceed = true;
}, 1000);
timerStart=true;
}
if (ifProceed) {
// Set the flag to prevent other widgets from inheriting the touch event
touchHandled = true;
// Track movement to determine if interaction was a click
self._touchMoved = false;
// Simulate the mouseover event
simulateMouseEvent(event, 'mouseover');
// Simulate the mousemove event
simulateMouseEvent(event, 'mousemove');
// Simulate the mousedown event
simulateMouseEvent(event, 'mousedown');
ifProceed = false;
timerStart=false;
clearTimeout(time1Sec);
}
};