2010-08-22 27 views
5

Tôi có HTML này:Làm cách nào để thêm phần tử gốc vào một nhóm đoạn văn?

<div id="description"> 
    <h5>Title</h5> 
    <p>First paragraph</p> 
    <p>Second paragraph</p> 
    <p>Third paragraph</p> 
</div> 

Tôi muốn chèn, với jQuery, một yếu tố phụ huynh cho tất cả <p> yếu tố, ngoại trừ cái đầu tiên. Vì vậy, các HTML mà tôi muốn tạo ra là thế này:

<div id="description"> 
    <h5>Title</h5> 
    <p>First paragraph</p> 
    <div class="details"> 
    <p>Second paragraph</p> 
    <p>Third paragraph</p> 
    </div> 
</div> 

Có những .wrap() hàm trong jQuery có thể thêm một phụ huynh, nhưng nếu tôi sử dụng nó như thế này:

$("#description p:not(:first)").wrap('<div class="details" />'); 

Nó kết thúc tốt đẹp tất cả của tôi <p> riêng lẻ.

Có cách nào để tôi có thể sửa đổi bộ chọn của mình để đặt <div> quanh "nhóm" thay thế không? Hoặc có lẽ nó dễ dàng hơn bằng cách sử dụng một chức năng khác mà chưa được biết đến với tôi?

Cảm ơn!

Trả lời

13

Vì vậy, bạn đang tìm kiếm phương thức .wrapAll().

$("#description p").not(":first").wrapAll('<div class="details" />'); 

Ref .: .wrapAll()

+0

Nice! Giải pháp sạch sẽ và dễ dàng! Cảm ơn bạn jAndy! Một câu hỏi con: có một lý do tại sao bạn đã viết bộ chọn bằng cách sử dụng .not() thay vì: không? (Tôi học jQuery một mình vì vậy nếu có một sự tinh tế ở đó, tôi không biết về nó.) Cảm ơn một lần nữa! – Gabriel

+2

@Gabriel: Nói chung là nhanh hơn để sử dụng các phương pháp để giảm "bộ gói" của các nút. Bằng cách sử dụng ký hiệu ': not()', 'Sizzle' (công cụ truy vấn css của John Resigs) phải thực hiện công việc. Và mặt khác, chậm hơn trong hầu hết các tình huống. – jAndy

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