2011-10-14 18 views
12

Tôi có một số trình soạn thảo html đơn giản. Hãy nói rằng các loại dùng sau:Ngăn jQuery thoát khỏi các thực thể html

<p>Ok, this just &amp; sucks :) &ndash;</p> 

và nó sẽ được lưu vào một số biến:

var content = "<p>Ok, this just &amp; sucks :) &ndash;</p>"; 

Bây giờ, ở đâu đó Tôi đang sử dụng jQuery để thêm văn bản này đối với một số yếu tố:

$(this).html(content); // where content is the string above 

Vấn đề là nó được thoát:

<p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p> 

Làm thế nào tôi có thể đạt được để có chuỗi chính xác với & amp; và & ndash; và cũng có < chứ không phải & lt; vì tôi cần thẻ html?

Chỉnh sửa: chi tiết khác được thêm

Trả lời

9

Vấn đề không phải là jQuery đang thoát khỏi thực thể. Tôi nghĩ nếu bạn sử dụng console.log để viết chuỗi content, bạn sẽ thấy rằng trình chỉnh sửa của bạn đang trả lại các thực thể thoát cho bạn.

Toàn bộ điểm .html() so với .text().html() dành cho HTML sẽ được coi là HTML.

+3

Cảm ơn bạn đã trả lời. Vâng vâng, "nội dung" được thoát ra (nó chứa cùng một văn bản như mã đầu tiên ở trên), nhưng jQuery lại thoát nó một lần nữa và do đó '& ; ndash; ' được tạo ra. – ladar

1

Tôi đoán bạn muốn có văn bản <p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p> được hiển thị chính xác với ra chuyển đổi chúng, do đó &amp;ndash; sẽ không được chuyển đổi sang &-, sau đó sử dụng:

$(this).text(content); 

Một vấn đề với điều này là content sẽ được thêm dưới dạng văn bản trong trang web thành phần this. Nó sẽ không phải là tạo thành phần p và thêm nó vào this.

Nhưng nếu bạn muốn thực hiện chuyển đổi thì mã của bạn sẽ hoạt động.

Một điều nữa tôi muốn đề cập, Tôi tin rằng ngôn ngữ không phải là ngôn ngữ duy nhất có liên quan đến các chuyển đổi đó. Trình duyệt đảm nhận vai trò chính trong các trường hợp đó. SO, những gì chúng tôi đã bao giờ làm trong kịch bản nếu trình duyệt có được một cơ hội khác để kiểm tra nội dung nó sẽ chuyển đổi chúng thành &-.