Tôi cần phải sao chép các id và sau đó thêm một số sau khi nó thích quá id1
, id2
vv Mỗi lần bạn nhấn bản sao bạn đặt các bản sao sau số mới nhất của id.
$("button").click(function() {
$("#id").clone().after("#id");
});
Tôi cần phải sao chép các id và sau đó thêm một số sau khi nó thích quá id1
, id2
vv Mỗi lần bạn nhấn bản sao bạn đặt các bản sao sau số mới nhất của id.
$("button").click(function() {
$("#id").clone().after("#id");
});
Câu trả lời:
$('#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 1
var 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) );
});
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<button id="cloneDiv">CLICK TO CLONE</button>
<div id="klon1">klon1</div>
<div id="klon2">klon2</div>
Giả sử bạn có nhiều yếu tố với ID thích klon--5
nhưng được xáo trộn (không theo thứ tự). Ở đây chúng tôi không thể đi :last
hoặc :first
do đó chúng tôi cần một cơ chế để lấy ID cao nhất:
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}`);
<div id="klon--12">12</div>
<div id="klon--34">34</div>
<div id="klon--8">8</div>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
.closest(div[id^=id])
và .remove
div đó.
Cập nhật: Như Roko C.Bulijan đã chỉ ra .. bạn cần sử dụng .insertSau đó để chèn nó sau div đã chọn. Cũng xem mã được cập nhật nếu bạn muốn nó được nối vào cuối thay vì bắt đầu khi được nhân bản nhiều lần. BẢN GIỚI THIỆU
Mã số:
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
});
Thử,
$("#id").clone().attr('id', 'id1').after("#id");
Nếu bạn muốn một bộ đếm tự động, hãy xem bên dưới,
var cloneCount = 1;
$("button").click(function(){
$("#id").clone().attr('id', 'id'+ cloneCount++).insertAfter("#id");
});
'id'+ ++ id
trong mã của bạn.
.after
. Xem câu trả lời cập nhật.
[id^=id]:last
Chúc mừng.
Đây là giải pháp đơn giản nhất làm việc cho tôi.
$('#your_modal_id').clone().prop("id", "new_modal_id").appendTo("target_container");
Tôi đã tạo ra một giải pháp tổng quát. Hàm bên dưới sẽ thay đổi id và tên của đối tượng nhân bản. Trong hầu hết các trường hợp, bạn sẽ cần số hàng vì vậy Chỉ cần thêm thuộc tính "data-row-id" vào đối tượng.
function renameCloneIdsAndNames( objClone ) {
if( !objClone.attr( 'data-row-id' ) ) {
console.error( 'Cloned object must have \'data-row-id\' attribute.' );
}
if( objClone.attr( 'id' ) ) {
objClone.attr( 'id', objClone.attr( 'id' ).replace( /\d+$/, function( strId ) { return parseInt( strId ) + 1; } ) );
}
objClone.attr( 'data-row-id', objClone.attr( 'data-row-id' ).replace( /\d+$/, function( strId ) { return parseInt( strId ) + 1; } ) );
objClone.find( '[id]' ).each( function() {
var strNewId = $( this ).attr( 'id' ).replace( /\d+$/, function( strId ) { return parseInt( strId ) + 1; } );
$( this ).attr( 'id', strNewId );
if( $( this ).attr( 'name' ) ) {
var strNewName = $( this ).attr( 'name' ).replace( /\[\d+\]/g, function( strName ) {
strName = strName.replace( /[\[\]']+/g, '' );
var intNumber = parseInt( strName ) + 1;
return '[' + intNumber + ']'
} );
$( this ).attr( 'name', strNewName );
}
});
return objClone;
}
Cái này cũng hoạt động
var i = 1;
$('button').click(function() {
$('#red').clone().appendTo('#test').prop('id', 'red' + i);
i++;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="test">
<button>Clone</button>
<div class="red" id="red">
</div>
</div>
<style>
.red {
width:20px;
height:20px;
background-color: red;
margin: 10px;
}
</style>
$('#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 1
var 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) );
});
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>