2011-08-25 22 views
27

Tôi có thể cắt (hoàn toàn, với tất cả kiểu và thuộc tính) một phần tử từ một vị trí và dán nó vào một vị trí khác (như body) với jQuery không?cắt hoàn toàn và dán một phần tử

Ngoài ra, tôi muốn đặt một chuỗi (hoặc thẻ) ở vị trí cũ, vì tôi muốn thay đổi vị trí của nó thành vị trí cũ ở cuối tập lệnh.

Tôi có thể? Làm cách nào?

Cảm ơn bạn.

+0

Ive không bao giờ nghe nói về bất cứ điều gì như thế này nhưng có lẽ tạo ra một xử lý sự kiện cho một lệnh sao chép, (rất nhiều ví dụ trên google, sau đó chỉ cần loại bỏ các html bên trong, bạn sẽ phải lưu mã bên trong html ở đâu đó đầu tiên, Có thể trong xml hoặc các phương thức khác, có thể là đối tượng chỉ có thể cắt khi dán đã được chọn, sau đó bạn có thể làm tất cả trong một hàm. http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/ –

+0

Lưu ý: Giải pháp thanh lịch để hoán đổi 2 mục lân cận: http://stackoverflow.com/a/8638127/669677 –

Trả lời

33

appendTo() sẽ tự động di chuyển các phần tử được so khớp từ eir vị trí hiện tại để các container quy định, mà có vẻ là những gì bạn muốn.

Bạn có thể sử dụng after() để chèn nội dung mới trước khi chuyển sang phần tử:

$("#yourElement").after("<p>Element was there</p>").appendTo("body"); 
+0

+1 nhưng nếu CSS được áp dụng như thế này mặc dù '.someContainer #yourElement {color: blue; } 'lấy nó ra khỏi container sẽ" hủy hoại "phong cách. Vì vậy, nó có thể phức tạp hơn. –

+0

Cảm ơn bạn. tôi đã sử dụng 'appendTo()' nhưng tôi không biết nó sẽ di chuyển các phần tử. – mrdaliri

+0

Shadow Wizard nói đúng, có jQuery một chức năng cho điều này? – mrdaliri

7

bạn có thể làm điều đó bởi clone bản sao đầu tiên nó đến một vị trí

$('#yourElement').clone().appendTo('#anotherDiv'); 

sau đó loại bỏ cái cũ,

$('#parentOfOldElement #yourElement').remove(); 

hoặc bạn có thể thay thế nó để có được nó sau

$('#parentOfOldElement #yourElement').replaceWith('<div id="toReplaceAgain">/div>'); 
+0

Cảm ơn bạn Tôi là người mới trong jQuery, và không nghe nói về 'remove()' – mrdaliri

+7

'.detach()' có thể được sử dụng thay thế của 'clone()' và 'remove()' –

10

.detach() là thích hợp hơn cho nhiệm vụ này, như @lvan gợi ý.

jQuery(jQuery("#yourElement").detach()).appendTo("body"); 
Các vấn đề liên quan