2012-02-21 27 views
16

Tôi có một div bao bọc với một số div phụ bên trong và các thẻ bên trong các div phụ đó. Tôi muốn loại bỏ các wrapper div. Tôi đã xem xét unwrap của JQuery, nhưng nó xuất hiện như thể tôi cần phải xác định các div con để nói với Jquery những gì để unwrap. Điều này có hiệu quả nếu có nhiều trẻ em không?xóa div gói và để nguyên tất cả các div phụ?

Vì vậy, mã trông giống như:

<div id="wrapper"> 
    <div id="innerDiv1"></div> 
    <div id="innerDiv2"></div> 
    <div id="innerDiv3"></div> 
</div> 

Bất kỳ sự giúp đỡ, như mọi khi, được đánh giá cao.

Cảm ơn bạn.

Trả lời

27

Phương pháp unwrap sẽ làm việc tốt (bạn có thể chọn bất kỳ/bất kỳ số lượng các anh chị em ruột):

$("#innerDiv1").unwrap(); 

Từ các tài liệu (nhấn mạnh thêm):

Các yếu tố phù hợp (và anh chị em của họ, nếu có) thay thế cha mẹ của họ trong cấu trúc DOM.

+1

Cảm ơn @James Allardice. Mặc dù tôi đã kiểm tra tài liệu JQuery, nhưng bằng cách nào đó tôi đã bỏ lỡ phần "và anh chị em của họ". Bắt một chút bleary mắt tôi đoán. –

+0

@robertsmith - Không có vấn đề gì, vui vì tôi có thể giúp :) –

5

Để thêm vào @ James

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

var innerDivs = $("#wrapper").html(); 
$("#wrapper").remove(); 
$("body").append(innerDivs);​ // you will need to change this to append to whatever element you like 

jsfiddle ví dụ này

http://jsfiddle.net/dAZ9D/

+2

Bạn có thể làm điều này, nhưng bạn sẽ mất mọi trình xử lý sự kiện bị ràng buộc với con của '# wrapper' vì các phần tử được gỡ bỏ hoàn toàn khỏi DOM và sau đó được thêm lại. Sử dụng phương thức 'unwrap' sẽ bảo toàn các trình xử lý sự kiện đó vì các phần tử không bao giờ bị loại bỏ khỏi DOM. –

+0

yes thats james đúng nhưng ông không cụ thể hỏi liệu để duy trì ngay cả xử lý hay không. Đó là lý do tại sao tôi nói "thêm vào James trả lời" :) Chúc mừng! –

+0

Tôi biết, chỉ cần chỉ ra trong trường hợp :) –

0
function unwrap(el){ 
    var parent = el.parentNode; // get the element's parent node 
    while (el.firstChild){ 
     parent.insertBefore(el.firstChild, el); // move all children out of the element 
    } 
    parent.removeChild(el); // remove the empty element 
} 

Mã này là thẳng về phía trước và nhiều hơn nhanh hơn jQ tương ứng phương thức của uery $ .unwrap().

Nguồn: https://plainjs.com/javascript/manipulation/unwrap-a-dom-element-35/

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