Saya menggunakan jQuery UI sortable untuk membuat kotak tabel saya dapat diurutkan. Kode tampaknya berfungsi dengan baik tetapi karena saya tidak menambahkan lebar ke td
s, ketika saya seret tr
itu menyusutkan konten.
Sebagai contoh; jika baris tabel saya adalah 500px ketika saya mulai menyeret, itu menjadi 300px. Saya berasumsi itu terjadi karena tidak ada lebar yang didefinisikan dalam kisi. Itu karena saya menggunakan dua kelas untuk td
s ( fix
dan liquid
).
The fix
kelas membuat td
sama dengan lebar konten dan liquid
membuat td
lebar 100%. Ini pendekatan saya untuk tabel kisi tanpa harus menetapkan lebar ke td
s.
Adakah yang tahu bagaimana membuat pekerjaan yang bisa diurutkan dengan pendekatan saya?
Jawaban:
Saya menemukan jawabannya di sini .
Saya memodifikasinya sedikit untuk mengkloning baris, alih-alih menambahkan lebar ke aslinya:
sumber
$(this).width($originals.eq(index).outerWidth());
Saya pikir itu dapat membantu:
sumber
Jawaban yang dipilih di sini adalah solusi yang sangat bagus, tetapi memiliki satu bug parah yang terlihat pada JS biola asli ( http://jsfiddle.net/bgrins/tzYbU/ ): coba seret baris terpanjang ( God Bless You, Mr Rosewater ), dan sisa sel lebarnya runtuh.
Ini berarti bahwa memperbaiki lebar sel pada sel yang diseret tidak cukup - Anda juga perlu memperbaiki lebar pada tabel.
JS Fiddle: http://jsfiddle.net/rp4fV/3/
Ini memperbaiki masalah tabel runtuh setelah Anda menyeret kolom pertama, tetapi memperkenalkan yang baru: jika Anda mengubah konten tabel ukuran sel sekarang diperbaiki.
Untuk mengatasinya saat menambahkan atau mengubah konten, Anda harus menghapus set lebar:
Kemudian tambahkan konten Anda, lalu perbaiki lagi lebar.
Ini masih bukan solusi yang lengkap, karena (terutama dengan tabel) Anda membutuhkan tempat penampung drop. Untuk itu kita perlu menambahkan fungsi saat start yang membangun placeholder:
JS Fiddle: http://jsfiddle.net/rp4fV/4/
sumber
$(".must-have-class").css("height", $(ui.item).outerHeight());
Tampaknya mengkloning baris tidak berfungsi dengan baik pada IE8, tetapi solusi aslinya tidak.
Diuji dengan jsFiddle .
sumber
Panggil kode berikut ini ketika meja Anda siap untuk disortir, ini akan memastikan elemen td Anda telah diperbaiki tanpa merusak struktur tabel.
sumber
th
jugatd
. Ini memperbaiki runtuhnya baris yang diseret dan tabel runtuh, tetapi dengan biaya memperbaiki lebar.jsFiddle
Setelah banyak upaya yang berbeda, saya hanya mencoba solusi sederhana yang melengkapi solusi Dave James Miller untuk mencegah tabel menyusut sambil menyeret baris terbesar. Saya harap ini akan membantu :)
sumber
Solusi Keith baik-baik saja tetapi menghasilkan sedikit kekacauan di Firefox yang tidak menambah colspans tetapi memberi isyarat. (The tipe js string sakit di lutut)
mengganti baris ini:
dengan:
Memperbaiki masalah. (Karena js dipaksa untuk memperlakukan variabel sebagai angka, bukan string)
sumber
Jawaban Dave James Miller bekerja untuk saya, tetapi karena tata letak wadah div pada halaman saya, pembantu yang menyeret dengan kursor mouse diimbangi dari posisi mouse saya. Untuk memperbaikinya, saya menambahkan yang berikut ke callback pembantu
Ini adalah panggilan balik lengkap dengan baris di atas ditambahkan:
Saya akan menambahkan ini sebagai komentar untuk jawaban Dave, tetapi saya tidak memiliki cukup perwakilan di akun ini.
sumber
Sepertinya
disableSelection()
- metode buruk dan usang saat ini. Saya tidak dapat menggunakan input teks di dalam baris yang dapat disortir lagiMozilla Firefox 35.0
. Itu sudah tidak fokus lagi.sumber
sumber
sumber
Terapkan sortable ke elemen tabel tbody dan hanya mengatur helper ke 'clone', seperti yang dijelaskan dalam API jquery-ui
sumber