Saya perlu untuk mengkloning id dan kemudian menambahkan nomor setelah suka begitu id1, id2, dll Setiap kali anda menekan clone Anda meletakkan clone setelah jumlah terbaru dari id.
$('#cloneDiv').click(function(){// get the last DIV which ID starts with ^= "klon"var $div = $('div[id^="klon"]:last');// Read the Number from that DIV's ID (i.e: 3 from "klon3")// And increment that number by 1var num = parseInt( $div.prop("id").match(/\d+/g),10)+1;// Clone it and assign the new ID (i.e: from num 4 to ID "klon4")var $klon = $div.clone().prop('id','klon'+num );// Finally insert $klon wherever you want
$div.after( $klon.text('klon'+num));});
<scriptsrc="https://code.jquery.com/jquery-3.1.0.js"></script><buttonid="cloneDiv">CLICK TO CLONE</button><divid="klon1">klon1</div><divid="klon2">klon2</div>
Katakanlah Anda memiliki banyak elemen dengan ID seperti klon--5tetapi diacak (tidak berurutan). Di sini kita tidak bisa mencari :lastatau :first, oleh karena itu kita membutuhkan mekanisme untuk mengambil ID tertinggi:
const $all = $('[id^="klon--"]');const maxID =Math.max.apply(Math, $all.map((i, el)=>+el.id.match(/\d+$/g)[0]).get());const nextId = maxID +1;
console.log(`New ID is: ${nextId}`);
1 untuk demo Kerja :) dan Terima kasih telah melihat jawaban saya. Saya telah memperbarui posting juga menambahkan demo kerja jsfiddle.net/HGtmR/4
Selvakumar Arumugam
apakah juga mungkin untuk memiliki tombol di dalam div yang menghapus div id saat ini?
pengguna1324780
1
@ user1324780 Ya itu mungkin, tetapi Anda harus mempostingnya sebagai pertanyaan baru. Bagaimanapun, petunjuknya adalah menemukan div .closest(div[id^=id])dan .removediv itu.
Selvakumar Arumugam
1
sangat sesuai dengan kebutuhan saya. Kemungkinan besar itu menghemat berjam-jam pengembangan! terima kasih
Nicolas Manzini
43
Pembaruan: Seperti yang ditunjukkan Roko C.Bulijan .. Anda perlu menggunakan .insertAfter untuk memasukkannya setelah div yang dipilih. Juga lihat kode yang diperbarui jika Anda ingin ditambahkan ke bagian akhir alih-alih dimulai saat dikloning beberapa kali. DEMO
Kode:
var cloneCount =1;;
$("button").click(function(){
$('#id').clone().attr('id','id'+ cloneCount++).insertAfter('[id^=id]:last')// ^-- Use '#id' if you want to insert the cloned // element in the beginning.text('Cloned '+(cloneCount-1));//<--For DEMO});
Mencoba,
$("#id").clone().attr('id','id1').after("#id");
Jika Anda menginginkan penghitung otomatis, lihat di bawah,
var cloneCount =1;
$("button").click(function(){
$("#id").clone().attr('id','id'+ cloneCount++).insertAfter("#id");});
Anda melewatkan kesempatan besar untuk menggunakan 'id'+ ++ idkode Anda.
Blazemonger
@ RokoC.Buljan Anda benar, tetapi pertanyaannya adalah bagaimana mengubah attr dari elemen kloning sehingga saya melewatkan untuk memperhatikan .after. Lihat jawaban yang diperbarui.
Selvakumar Arumugam
:) +1 untuk membulatkannya menjadi 5! ;) penggunaan [id^=id]:lastSelamat yang bagus.
Roko C. Buljan
bisakah ini diterapkan pada nama juga?
Optiq
5
Ini adalah solusi paling sederhana yang berhasil untuk saya.
Saya telah membuat solusi umum. Fungsi di bawah ini akan mengubah id dan nama objek kloning. Dalam kebanyakan kasus, Anda akan membutuhkan nomor baris jadi cukup tambahkan atribut "data-row-id" ke objek.
$('#cloneDiv').click(function(){// get the last DIV which ID starts with ^= "klon"var $div = $('div[id^="klon"]:last');// Read the Number from that DIV's ID (i.e: 3 from "klon3")// And increment that number by 1var num = parseInt( $div.prop("id").match(/\d+/g),10)+1;// Clone it and assign the new ID (i.e: from num 4 to ID "klon4")var $klon = $div.clone().prop('id','klon'+num );// Finally insert $klon wherever you want
$div.after( $klon.text('klon'+num));});
.closest(div[id^=id])
dan.remove
div itu.Pembaruan: Seperti yang ditunjukkan Roko C.Bulijan .. Anda perlu menggunakan .insertAfter untuk memasukkannya setelah div yang dipilih. Juga lihat kode yang diperbarui jika Anda ingin ditambahkan ke bagian akhir alih-alih dimulai saat dikloning beberapa kali. DEMO
Kode:
Mencoba,
Jika Anda menginginkan penghitung otomatis, lihat di bawah,
sumber
'id'+ ++ id
kode Anda..after
. Lihat jawaban yang diperbarui.[id^=id]:last
Selamat yang bagus.Ini adalah solusi paling sederhana yang berhasil untuk saya.
sumber
Saya telah membuat solusi umum. Fungsi di bawah ini akan mengubah id dan nama objek kloning. Dalam kebanyakan kasus, Anda akan membutuhkan nomor baris jadi cukup tambahkan atribut "data-row-id" ke objek.
sumber
Ini juga berhasil
sumber
sumber