2011-06-20 39 views
5

Tôi nhận ra rằng tôi có thể thêm vào trước công cụ để một yếu tố sử dụng:Cách thêm văn bản (không phải HTML) trong jQuery?

$(...).prepend(myText); 

Tuy nhiên, nếu myText là, giả sử, "<span>", tôi thực sự muốn văn bản xuất hiện, nhưng .prepend() thay vào đó sẽ thêm vào trước một phần tử span trống. Cách được khuyến nghị để giải quyết vấn đề này là gì? Tôi có thực sự phải HTML-thoát khỏi văn bản bằng tay hoặc là có một cái gì đó thanh lịch hơn?

Trả lời

4

Bạn có thể tạo một textnode và đưa các nội dung đó và prepend rằng:

$('div').prepend(document.createTextNode("<span>")); 

dụ: http://jsfiddle.net/niklasvh/gCKHe/

+0

hi, fiddle này không hoạt động trong trường hợp khi div có "

" html. nếu bạn có bất kỳ giải pháp cho plz đó cung cấp. TIA :) –

1

thực thể HTML là ok, theo ý kiến ​​của tôi:

$(...).prepend('&lt;span&gt;'); 

Bạn có thể tự động hóa các thực thể có mẹo tìm thấy tại http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

$(...).prepend($('<div/>').text('<span>').html()); 

Nếu bạn cũng muốn tạo chức năng của PHP htmlentities trong Javascript, bạn có thể sử dụng mã có sẵn tại dự án PHP-JS: http://phpjs.org/functions/htmlentities:425

Hoặc bạn có thể đơn giản hóa bằng cách gói thủ thuật trước trong một chức năng:

function htmlentities(string) { 
    return $('<div/>').text(string).html(); 
} 

Trong cả hai trường hợp, bạn sẽ sử dụng htmlentities chức năng như thế này:

$(...).prepend(htmlentities('<span>')); 
4

Bạn có thể sử dụng text chức năng thay vì prepend, và chỉ cần thêm văn bản gốc đến cuối văn bản mới:

$("#elementID").text("<span>" + $("#elementID").text());

+2

Điều gì sẽ xảy ra nếu * phần tử gốc * chứa html? Tất cả sẽ bị mất **. – Niklas

+0

Thật vậy ... đó là một điểm tốt! Phương pháp của bạn chắc chắn là tốt hơn. –

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