Ich suche ein Drag & DROP-Plugin, das auf Touch-Geräten funktioniert.
Ich möchte ähnliche Funktionen wie das jQuery UI-Plugin, das "droppable" Elemente zulässt.
Das jqtouch-Plugin unterstützt das Ziehen, aber kein Ablegen.
Hier ist Drag & Drop, das nur iPhone / iPad unterstützt.
Kann mich jemand auf ein Drag & Drop-Plugin hinweisen, das auf Android / iOS funktioniert?
... oder es ist möglich, das jqtouch-Plugin auf Droppability zu aktualisieren, es läuft bereits auf Andriod und IOS.
Vielen Dank!
Antworten:
Sie können die Jquery-Benutzeroberfläche zum Ziehen und Ablegen mit einer zusätzlichen Bibliothek verwenden, die Mausereignisse in Berührung übersetzt. Dies ist die Bibliothek, die ich empfehle: https://github.com/furf/jquery-ui-touch-punch , with Dies sollte Ihr Drag & Drop von der Jquery-Benutzeroberfläche auf Touch-Geräten funktionieren
oder Sie können diesen Code verwenden, den ich verwende, er wandelt auch Mausereignisse in Berührungen um und funktioniert wie Magie.
Und rufen Sie in Ihrem Dokument bereits die Funktion init () auf
Code von hier gefunden
quelle
document.getElementById('draggableContainer').addEventListener(...
Für alle, die dies nutzen und die Klickfunktion beibehalten möchten (wie John Landheer in seinem Kommentar erwähnt), können Sie dies mit nur wenigen Änderungen tun:
Fügen Sie ein paar Globale hinzu:
Ändern Sie dann die switch-Anweisung vom Original in Folgendes:
Vielleicht möchten Sie 'clickms' an Ihren Geschmack anpassen. Im Grunde ist es nur ein "Touchstart", gefolgt von einem "Touchend", um einen Klick zu simulieren.
quelle
click
funktioniert das manchmal und manchmal nicht ???Danke für die obigen Codes! - Ich habe verschiedene Optionen ausprobiert und dies war das Ticket. Ich hatte Probleme damit, dass verhinderte, dass Default das Scrollen auf dem iPad verhinderte. Ich teste jetzt auf ziehbare Elemente und es funktioniert bisher hervorragend.
quelle
Ich hatte die gleiche Lösung wie gregpress answer , aber meine ziehbaren Elemente verwendeten eine Klasse anstelle einer ID. Es scheint zu funktionieren.
quelle
Alter Thread, den ich kenne .......
Das Problem mit der Antwort von @ryuutatsuo ist, dass es auch alle Eingaben oder andere Elemente blockiert, die auf 'Klicks' reagieren müssen (zum Beispiel Eingaben), also habe ich diese Lösung geschrieben. Diese Lösung ermöglichte die Verwendung jeder vorhandenen Drag & Drop-Bibliothek, die auf Mousedown-, Mousemove- und Mouseup-Ereignissen auf jedem Touch-Gerät (oder Cumputer) basiert. Dies ist auch eine browserübergreifende Lösung.
Ich habe auf mehreren Geräten getestet und es funktioniert schnell (in Kombination mit der Drag & Drop-Funktion von ThreeDubMedia (siehe auch http://threedubmedia.com/code/event/drag )). Da es sich um eine jQuery-Lösung handelt, können Sie sie nur mit jQuery-Bibliotheken verwenden. Ich habe jQuery 1.5.1 dafür verwendet, da einige neuere Funktionen mit IE9 und höher nicht ordnungsgemäß funktionieren (nicht mit neueren Versionen von jQuery getestet).
Bevor Sie einem Ereignis eine Drag & Drop- Operation hinzufügen , müssen Sie zuerst diese Funktion aufrufen :
Sie können auch alle Komponenten / untergeordneten Elemente für die Eingabe blockieren oder die Ereignisbehandlung beschleunigen, indem Sie die folgende Syntax verwenden:
Hier ist der Code, den ich geschrieben habe. Ich habe ein paar nette Tricks benutzt, um die Bewertung zu beschleunigen (siehe Code).
Was es tut: Zuerst übersetzt es einzelne Berührungsereignisse in Mausereignisse. Es wird geprüft, ob ein Ereignis durch ein Element auf / in dem Element verursacht wird, das herumgezogen werden muss. Wenn es sich um ein Eingabeelement wie Eingabe, Textbereich usw. handelt, wird die Übersetzung übersprungen, oder wenn ein Standard-Mausereignis daran angehängt ist, wird auch eine Übersetzung übersprungen.
Ergebnis: Jedes Element in einem ziehbaren Element funktioniert noch.
Viel Spaß beim Codieren, Greetz, Erwin Haantjes
quelle
simulateTouchEvents(<object>, true);
?touch
Ereignisse einschaltechrome
, kann ich nicht durch die Tabelle scrollen. Nicht einmal auf dem Handy.