2012-05-06 22 views
7

tôi có mã này trong HTMLCách tốt nhất để chuyển đổi gói các yếu tố sử dụng jQuery

<span id="s">Attachments</span> 

Làm thế nào để sử dụng jQuery để chuyển đổi các yếu tố SPAN ngoài với khối mã bảng sau, do đó "đính kèm" text trở nên quấn với phần tử bảng.

<table id="t"> 
    <tr> 
    <td>Attachments</td> 
    </tr> 
</table> 
+0

Tìm thấy một giải pháp ở đây: http://stackoverflow.com/questions/17872320/jquery-changing-wrapping-tag –

Trả lời

2

Bạn có thể tạo một bảng với một tr và td, chèn nội dung HTML từ nhịp vào đó yếu tố td mới, chèn bảng ngay sau khi khoảng thời gian, và cuối cùng, loại bỏ các khoảng thời gian.

$("<table id='t'><tr><td>" + $("#s").html() + 
    "</td></tr></table").insertAfter("#s"); 

$("#s").remove(); 

Tôi giả định bằng "vuốt" nghĩa là "hoán đổi"? Vì vậy, đó là lý do tại sao tôi đã loại bỏ khoảng gốc. Nếu không phải như vậy, chỉ cần thoát khỏi cuộc gọi remove.

+0

Cảm ơn! có thể bạn có một ý tưởng tại sao điều này không hoạt động? http://jsfiddle.net/5VG6F/ –

+1

Hãy thử thay vào đó: http://jsfiddle.net/Fh24j/. Tôi đã phải thay đổi jsFiddle để không sử dụng onLoad vì nó không thể xác định chức năng của bạn. Tôi cũng đơn giản hóa mã và chèn insertAfter trên cùng một lệnh tạo bảng. – jmort253

+0

Xóa nhận xét trước của tôi. –

2

Bó yếu tố #s, sau đó thay thế nó với nội dung riêng của nó:

$("#s") 
    .wrap("<table id='t'><tr><td></td></tr></table>") 
    .replaceWith(function(){ 
     return this.innerHTML; 
    }); 

Demo: http://jsbin.com/elotan/edit#source

Sau thảo luận thêm trong các ý kiến ​​dưới đây, nó xuất hiện OP muốn để có thể tạo ra một bảng ad-hoc và chèn #s vào bất kỳ số nào trong số td của nó. Sau đây có thể được tốt hơn:

$("<table>", { 
    id:'t', html:'<tr><td>Foo</td><td>' + $("#s").html() + '</td></tr>' 
}).replaceAll("#s"); 
+0

Điều này thật tuyệt! Tôi hơi bối rối làm thế nào để biết nơi chèn văn bản. Ví dụ: http: //jsbin.com/asinop Mức độ mà nó biết để chèn "Tệp đính kèm" vào Ô-1, nhưng không phải trong ô-2? –

+1

@RegisteredUser Ô đầu tiên được coi là vùng chứa bên trong đầu tiên. Như vậy, nó là vị trí cuối cùng được sử dụng. Tôi sẽ tránh nhận được quá phức tạp với chuỗi wrapper của bạn mặc dù. – Sampson

+0

OK, nhưng chỉ là một câu hỏi. Điều gì sẽ xảy ra nếu tôi muốn vị trí là TR/TD thứ hai dưới dạng vùng chứa? Tôi nên sửa đổi gì? –

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