Apa metode terbaik di jQuery untuk menambahkan baris tambahan ke tabel sebagai baris terakhir?
Apakah ini dapat diterima?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Apakah ada batasan untuk apa yang dapat Anda tambahkan ke tabel seperti ini (seperti input, seleksi, jumlah baris)?
javascript
jquery
html-table
Darryl Hein
sumber
sumber
Jawaban:
Pendekatan yang Anda sarankan tidak dijamin untuk memberikan hasil yang Anda cari - bagaimana jika Anda memiliki
tbody
contoh:Anda akan berakhir dengan yang berikut:
Karenanya saya akan merekomendasikan pendekatan ini:
Anda dapat memasukkan apa saja di dalam
after()
metode selama HTML itu valid, termasuk beberapa baris seperti contoh di atas.Pembaruan: Meninjau kembali jawaban ini mengikuti aktivitas terkini dengan pertanyaan ini. kelopak mata membuat komentar yang baik bahwa akan selalu ada
tbody
dalam DOM; ini benar, tetapi hanya jika setidaknya ada satu baris. Jika Anda tidak memiliki baris, tidak akan adatbody
kecuali Anda telah menentukan sendiri.DaRKoN_ menyarankan untuk
tbody
menambahkan daripada menambahkan konten setelah yang terakhirtr
. Ini mengatasi masalah tidak memiliki baris, tetapi masih tidak antipeluru karena Anda secara teoritis dapat memiliki beberapatbody
elemen dan baris akan ditambahkan ke masing-masing.Menimbang semuanya, saya tidak yakin ada solusi satu baris tunggal yang memperhitungkan setiap skenario yang mungkin. Anda perlu memastikan kode jQuery sesuai dengan markup Anda.
Saya pikir solusi teraman mungkin untuk memastikan Anda
table
selalu menyertakan setidaknya satutbody
di markup Anda, bahkan jika tidak memiliki baris. Atas dasar ini, Anda dapat menggunakan yang berikut ini yang akan berfungsi namun banyak baris yang Anda miliki (dan juga memperhitungkan beberapatbody
elemen):sumber
$('#myTable').find('tbody:last')
alih-alih$('#myTable > tbody:last')
.jQuery memiliki fasilitas bawaan untuk memanipulasi elemen DOM dengan cepat.
Anda dapat menambahkan apa pun ke meja Anda seperti ini:
The
$('<some-tag>')
hal dalam jQuery adalah objek tag yang dapat memiliki beberapaattr
atribut yang dapat diatur dan, sertatext
, yang mewakili teks antara tag di sini:<tag>text</tag>
.Ini adalah beberapa indentasi yang cukup aneh, tetapi lebih mudah bagi Anda untuk melihat apa yang terjadi dalam contoh ini.
sumber
Jadi semuanya berubah sejak @Luke Bennett menjawab pertanyaan ini. Ini adalah pembaruan.
jQuery sejak versi 1.4 (?) secara otomatis mendeteksi jika elemen Anda mencoba untuk memasukkan (menggunakan salah satu
append()
,prepend()
,before()
, atauafter()
metode) adalah<tr>
dan menyisipkan ke dalam pertama<tbody>
di meja Anda atau membungkus menjadi baru<tbody>
jika salah satu tidak ada.Jadi ya kode contoh Anda dapat diterima dan akan berfungsi dengan baik dengan jQuery 1.4+. ;)
sumber
yourString.trim()
bisa memperbaiki ini.Bagaimana jika Anda punya
<tbody>
dan<tfoot>
?Seperti:
Maka itu akan memasukkan baris baru Anda di footer - bukan ke tubuh.
Oleh karena itu solusi terbaik adalah dengan memasukkan
<tbody>
tag dan penggunaan.append
, daripada.after
.sumber
Saya tahu Anda telah meminta metode jQuery. Saya melihat banyak dan menemukan bahwa kita dapat melakukannya dengan cara yang lebih baik daripada menggunakan JavaScript secara langsung dengan fungsi berikut.
index
adalah bilangan bulat yang menentukan posisi baris yang akan disisipkan (mulai dari 0). Nilai -1 juga bisa digunakan; yang menghasilkan baris baru akan disisipkan di posisi terakhir.Parameter ini diperlukan di Firefox dan Opera , tetapi opsional di Internet Explorer, Chrome dan Safari .
Jika parameter ini dihilangkan,
insertRow()
masukkan baris baru di posisi terakhir di Internet Explorer dan di posisi pertama di Chrome dan Safari.Ini akan bekerja untuk setiap struktur tabel HTML yang dapat diterima.
Contoh berikut akan memasukkan baris terakhir (-1 digunakan sebagai indeks):
Saya harap ini membantu.
sumber
saya merekomendasi
sebagai lawan
Kata kunci
first
danlast
bekerja pada tag pertama atau terakhir untuk memulai, bukan ditutup. Oleh karena itu, ini bermain lebih baik dengan tabel bersarang, jika Anda tidak ingin tabel bersarang diubah, tetapi tambahkan ke tabel keseluruhan. Setidaknya, inilah yang saya temukan.sumber
Menurut saya cara tercepat dan jelas adalah
di sini adalah demo Fiddle
Saya juga dapat merekomendasikan fungsi kecil untuk membuat lebih banyak perubahan html
Jika Anda menggunakan komponis string saya, Anda dapat melakukan ini seperti
Ini demo Fiddle
sumber
tbody
Anda bisa mendapatkan lebih banyak sisipan$("SELECTOR").last()
membatasi koleksi tag AndaIni dapat dilakukan dengan mudah menggunakan fungsi "last ()" dari jQuery.
sumber
Saya menggunakan cara ini ketika tidak ada baris dalam tabel, dan juga, setiap baris cukup rumit.
style.css:
xxx.html
sumber
Untuk solusi terbaik yang diposting di sini, jika ada tabel bersarang di baris terakhir, baris baru akan ditambahkan ke tabel bersarang alih-alih tabel utama. Solusi cepat (mempertimbangkan tabel dengan / tanpa tbody dan tabel dengan tabel bersarang):
Contoh penggunaan:
sumber
Saya memecahkannya dengan cara ini.
Menggunakan jquery
Potongan
sumber
Saya mengalami beberapa masalah terkait, mencoba menyisipkan baris tabel setelah baris yang diklik. Semua baik-baik saja kecuali panggilan .after () tidak berfungsi untuk baris terakhir.
Saya mendarat dengan solusi yang sangat berantakan:
buat tabel sebagai berikut (id untuk setiap baris):
dll ...
lalu :
sumber
Anda dapat menggunakan fungsi jQuery add table row ini . Ini berfungsi baik dengan tabel yang memiliki
<tbody>
dan yang tidak. Juga mempertimbangkan colspan dari baris tabel terakhir Anda.Berikut adalah contoh penggunaannya:
sumber
Solusi saya:
pemakaian:
sumber
tbody
dalam tabel .. ?? berarti ada baris langsung di dalam<table>
elemen, bahkan jika tanpa header apa pun.sumber
Jawaban Neil sejauh ini adalah yang terbaik. Namun semuanya menjadi sangat cepat berantakan. Saran saya adalah menggunakan variabel untuk menyimpan elemen dan menambahkannya ke hierarki DOM.
HTML
JAVASCRIPT
sumber
Menulis dengan fungsi javascript
sumber
Saya menemukan plugin AddRow ini cukup berguna untuk mengelola baris tabel. Padahal, solusi Luke akan paling cocok jika Anda hanya perlu menambahkan baris baru.
sumber
Berikut adalah beberapa kode retas hacketi. Saya ingin mempertahankan templat baris di halaman HTML . Baris tabel 0 ... n ditampilkan pada waktu permintaan, dan contoh ini memiliki satu baris hardcode dan baris templat yang disederhanakan. Tabel template disembunyikan, dan tag baris harus berada dalam tabel yang valid atau browser dapat menjatuhkannya dari pohon DOM . Menambahkan baris menggunakan penghitung penghitung + 1, dan nilai saat ini dipertahankan dalam atribut data. Ini menjamin setiap baris mendapat URL unik parameter .
Saya telah menjalankan tes pada Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800 , Nokia C7 (dengan Symbian 3), stok Android dan browser beta Firefox.
PS: Saya memberikan semua kredit kepada tim jQuery; mereka layak mendapatkan segalanya. Pemrograman JavaScript tanpa jQuery - Saya bahkan tidak ingin memikirkan mimpi buruk itu.
sumber
sumber
Saya rasa saya telah melakukan dalam proyek saya, ini dia:
html
js
sumber
Ini solusi saya
sumber
jika Anda memiliki variabel lain, Anda dapat mengakses dalam
<td>
tag seperti itu coba.Dengan cara ini saya berharap ini akan sangat membantu
sumber
Karena saya juga punya cara menambahkan baris pada akhirnya atau tempat tertentu, jadi saya pikir saya juga harus membagikan ini:
Pertama cari tahu panjang atau baris:
dan kemudian gunakan kode di bawah ini untuk menambahkan baris Anda:
sumber
Untuk menambahkan contoh yang baik pada topik, berikut adalah solusi yang berfungsi jika Anda perlu menambahkan baris pada posisi tertentu.
Baris tambahan ditambahkan setelah baris ke-5, atau di akhir tabel jika ada kurang dari 5 baris.
Saya meletakkan konten di wadah siap (tersembunyi) di bawah tabel ..jadi jika Anda (atau perancang) harus mengubahnya, tidak perlu mengedit JS.
sumber
Anda bisa men-cache variabel footer dan mengurangi akses ke DOM (Catatan: mungkin lebih baik menggunakan baris palsu daripada footer).
sumber
akan menambahkan baris baru ke yang pertama
TBODY
dari tabel, tanpa tergantung pada salah satuTHEAD
atauTFOOT
sekarang. (Saya tidak menemukan informasi dari versi jQuery mana.append()
perilaku ini hadir.)Anda dapat mencobanya dalam contoh berikut:
Di mana contoh
a b
baris disisipkan setelah1 2
, bukan setelah3 4
dalam contoh kedua. Jika tabel itu kosong, jQuery membuatTBODY
baris baru.sumber
Jika Anda menggunakan plugin Datatable JQuery, Anda dapat mencoba.
Rujuk Datatables fnAddData Datatables API
sumber
Secara sederhana:
sumber
Coba ini: cara yang sangat sederhana
sumber