Saya mencari plugin drag & DROP yang berfungsi pada perangkat sentuh.
Saya ingin fungsionalitas yang mirip dengan plugin jQuery UI yang memungkinkan elemen "droppable".
The jqtouch Plugin mendukung menyeret, tetapi tidak ada menjatuhkan.
Berikut adalah drag & drop yang hanya mendukung iPhone / iPad.
Adakah yang bisa mengarahkan saya ke plugin seret & lepas yang berfungsi di android / ios?
... Atau mungkin juga untuk memperbarui plugin jqtouch untuk droppability, yang sudah berjalan di Android dan iOS.
Terima kasih!
Jawaban:
Anda dapat menggunakan UI Jquery untuk menyeret dan melepas dengan pustaka tambahan yang menerjemahkan kejadian mouse menjadi sentuhan yang Anda butuhkan, pustaka yang saya rekomendasikan adalah https://github.com/furf/jquery-ui-touch-punch , dengan ini seret dan lepas Anda dari Jquery UI harus bekerja pada perangkat sentuh
atau Anda dapat menggunakan kode ini yang saya gunakan, ini juga mengubah kejadian mouse menjadi sentuhan dan bekerja seperti sihir.
Dan di dokumen Anda, panggil saja fungsi init ()
kode ditemukan dari sini
sumber
document.getElementById('draggableContainer').addEventListener(...
Bagi siapa pun yang ingin menggunakan ini dan mempertahankan fungsionalitas 'klik' (seperti yang disebutkan John Landheer dalam komentarnya), Anda dapat melakukannya hanya dengan beberapa modifikasi:
Tambahkan beberapa global:
Kemudian ubah pernyataan switch dari aslinya ke ini:
Anda mungkin ingin menyesuaikan 'clickm' dengan selera Anda. Pada dasarnya ini hanya menonton 'touchstart' diikuti dengan cepat oleh 'touchend' untuk mensimulasikan klik.
sumber
click
berhasil dan terkadang tidak ???Terima kasih untuk kode di atas! - Saya mencoba beberapa opsi dan ini tiketnya. Saya mengalami masalah dalam preventDefault yang mencegah pengguliran di ipad - Saya sekarang menguji item yang dapat diseret dan sejauh ini berfungsi dengan baik.
sumber
Saya memiliki solusi yang sama dengan jawaban gregpress , tetapi item yang dapat diseret saya menggunakan kelas, bukan id. Sepertinya berhasil.
sumber
Benang lama yang saya tahu .......
Masalah dengan jawaban @ryuutatsuo adalah bahwa ia juga memblokir input atau elemen lain yang harus bereaksi pada 'klik' (misalnya input), jadi saya menulis solusi ini. Solusi ini memungkinkan untuk menggunakan pustaka seret dan lepas yang ada yang didasarkan pada peristiwa mousedown, mousemove, dan mouseup pada perangkat sentuh apa pun (atau komputer). Ini juga merupakan solusi lintas-browser.
Saya telah mengujinya pada beberapa perangkat dan bekerja cepat (dikombinasikan dengan fitur drag and drop dari ThreeDubMedia (lihat juga http://threedubmedia.com/code/event/drag )). Ini adalah solusi jQuery sehingga Anda dapat menggunakannya hanya dengan jQuery libs. Saya telah menggunakan jQuery 1.5.1 untuk itu karena beberapa fungsi yang lebih baru tidak berfungsi dengan baik dengan IE9 dan di atasnya (tidak diuji dengan versi jQuery yang lebih baru).
Sebelum Anda menambahkan operasi seret atau lepas ke acara, Anda harus memanggil fungsi ini terlebih dahulu :
Anda juga dapat memblokir semua komponen / turunan untuk input atau untuk mempercepat penanganan acara dengan menggunakan sintaks berikut:
Ini kode yang saya tulis. Saya menggunakan beberapa trik bagus untuk mempercepat evaluasi sesuatu (lihat kode).
Kegunaan: Awalnya, ini menerjemahkan peristiwa satu sentuhan menjadi peristiwa mouse. Ia memeriksa apakah suatu peristiwa disebabkan oleh elemen di / dalam elemen yang harus diseret. Jika itu adalah elemen input seperti input, textarea dll, itu melewatkan terjemahan, atau jika event mouse standar dilampirkan padanya itu juga akan melewatkan terjemahan.
Hasil: Setiap elemen pada elemen yang dapat diseret masih berfungsi.
Selamat membuat kode, salam, Erwin Haantjes
sumber
simulateTouchEvents(<object>, true);
???touch
acara dichrome
, saya tidak dapat menggulir tabel. Bahkan tidak di ponsel.