2010-07-28 36 views
11

Cách di chuyển phần tử HTML sang phần tử khác. Lưu ý rằng, tôi không có nghĩa là vị trí của phần tử di chuyển. Hãy xem xét mã HTML này:Cách di chuyển phần tử HTML

<div id="target"></div> 
<span id="to_be_moved"></span> 

Tôi muốn di chuyển "to_be_moved" sang "target" để "target" có con "to_be_moved" ngay bây giờ. Vì vậy, kết quả nên như thế này:

<div id="target"><span id="to_be_moved"></span></div> 

Tôi đã tìm kiếm trong google (đặc biệt là sử dụng khung nguyên mẫu) nhưng tất cả những gì tôi có là vị trí di chuyển, không phải như tôi muốn. Cam ơn trươc.

Trả lời

19
document.getElementById('target').appendChild( document.getElementById('to_be_moved')) 
+0

Điều gì về "to_be_moved"? Nó vẫn còn ở vị trí ban đầu? – iroel

+0

Không nên. Thử nó? –

+2

Huh? Cha mẹ của phần tử sẽ thay đổi, vì vậy nó "di chuyển". Nút này không phải là "bị xóa" mặc dù bởi vì nó bây giờ ở nơi khác trong cây DOM. –

0

Giả sử bạn đang làm việc với các phần tử DOM gốc, phương pháp Javascript .appendChild sẽ phù hợp với nhu cầu của bạn.

Trong javascript bản xứ, document.getElementByID có lẽ là lựa chọn tốt nhất của bạn trong việc có được phần tử DOM, vì vậy ...

var target = document.getElementById('target') 
document.getElementById('to_be_moved').appendChild(target) 
6
$("target").insert($("to_be_moved").remove()); 

Hoặc, một cách dễ đọc hơn ...

var moveIt = $("to_be_moved").remove(); 
$("target").insert(moveIt); 
+0

Tôi có một câu hỏi. Điều gì về tài sản "to_be_moved", giá trị vv? Nó vẫn còn giống như trước khi di chuyển (giống như bản sao phương pháp DOM bản địa)? – iroel

+0

@iroel Có, phương thức ['remove'] (http://www.prototypejs.org/api/element/remove) lấy phần tử ra khỏi DOM và trả về nó. Nó không phải là một bản sao, nó là * phần tử *. –

+1

Bạn thậm chí không cần sử dụng '.remove()'. Bạn chỉ có thể chèn vào vị trí mới. – Josh

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