2011-12-23 34 views
12

Tôi muốn sao chép một hàng của một bảng, nhưng khi tôi sao chép, phần tử mới nameid sẽ giống như phần tử mà từ đó nó được sao chép.Có thể sao chép các phần tử HTML trong jQuery bằng ID và tên mới không?

Điều tôi cần là các phần tử nhân bản với một khác nhau nameid.

+2

câu trả lời là http://stackoverflow.com/questions/1339730/is-there-a-way-to-clone-elements-using-jquery. – anson

+0

andbeyond được liên kết với tất cả câu trả lời cần thiết. Cần phải làm 20 trong số họ? Quấn câu trả lời đó trong một trình lặp và thêm chỉ mục vào ID hoặc một cái gì đó tương tự. –

Trả lời

29

tôi sẽ vượt qua prop bản đồ về cặp khóa/giá trị để cập nhật các giá trị nhân bản sau:

$("#selector").clone().prop({ id: "newId", name: "newName"}); 

nhân bản vô tính các yếu tố không tồn tại trong DOM cho đến khi bạn thêm chúng, vì vậy bạn sẽ không phải lo lắng về bản sao id s cho đến khi bạn làm điều đó.

Ví dụ:http://jsfiddle.net/BbpRA/

Cập nhật: Trong comment bạn nói bạn có 20 input s bạn cần phải sao chép. Tôi sẽ tạo một hàm lấy phần tử DOM và id và tên mới. Bạn thậm chí có thể làm cho một plugin nhỏ ra khỏi nó:

(function($) { 
    $.fn.cloneWithProperties = function (properties) { 
     return this.clone().prop(properties); 
    }; 
})(jQuery) 

Cách sử dụng:

$("#selector").cloneWithProperties({ id: "newId", name: "newName" }); 
+0

nhưng tôi có gần 20 hộp đầu vào mà tôi phải sao chép –

+1

Không nên có '.attr ({...})' thay thế? Cả id và tên đều không là thuộc tính. Cả hai đều là các thuộc tính. http://api.jquery.com/prop/ – techfoobar

+0

"attr" (thay vì "prop") sẽ là "chính xác hơn", nhưng điều này chắc chắn là cách để đi. –

1

Bạn có thể làm một cái gì đó như:

var x = $("#selector").clone(); 

x.find('#oldID1').attr({id: "newID1", name: "newName1"}); 
x.find('#oldID2').attr({id: "newID2", name: "newName2"}); 
... 

Sau khi thực hiện nó, bạn có thể thêm x để bất cứ nơi nào bạn muốn.

Xin lưu ý rằng #selector ở trên đề cập đến yếu tố hàng trong bảng của bạn.

6

Bạn có thể thử một cái gì đó như thế này:

<div class="container"> 
    <div class="goodbye"> 
    Goodbye 
    <div id="h1" class="hello">Hello</div> 
    </div> 
</div> 

$('#h1').clone().attr('id','h2').appendTo('.container'); 
0

Bạn có thể tự động clone của bạn với cloneJS. Đây chỉ là phiên bản beta: CloneJS

Các vấn đề liên quan