2011-06-20 14 views
5

Zdaję sobie sprawę, że mogę poprzedzić rzeczy do elementu przy użyciu:Jak wstawić tekst (nie HTML) w jQuery?

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

Jednak jeśli myText jest, powiedzmy, "<span>", tak naprawdę chcą, że tekst pojawi się, ale .prepend() by zamiast poprzedzić pustego elementu zakresu. Jaki jest zalecany sposób rozwiązania tego problemu? Czy naprawdę muszę uciec z HTML ręcznie, czy jest coś bardziej eleganckiego?

Odpowiedz

4

Można utworzyć textnode i umieścić zawartość tam i prepend że:

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

przykład: http://jsfiddle.net/niklasvh/gCKHe/

+0

Cześć, to skrzypce nie działa w przypadku, gdy div ma "

" HTML. , jeśli masz jakieś rozwiązanie dla tego dostarczają plz. TIA :) –

1

podmioty HTML są ok, moim zdaniem:

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

Użytkownik może zautomatyzować jednostki z końcówką znalezioną pod numerem http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

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

Jeśli chcemy także utworzyć funkcję PHP htmlentities w JavaScripcie, można użyć kodu dostępnego w projekcie PHP-JS: http://phpjs.org/functions/htmlentities:425

Albo można uprościć przez owinięcie poprzedniej wskazówce w funkcji:

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

W obu przypadkach należy użyć funkcji htmlentities tak:

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

Można użyć funkcji text zamiast prepend i po prostu dodać oryginalny tekst do końca nowym tekstem:

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

+2

Co jeśli oryginalny element * zawiera również HTML? Wszystko będzie ** stracone **. – Niklas

+0

Rzeczywiście ... to dobra uwaga! Twoja metoda jest niewątpliwie lepsza. –

Powiązane problemy