2011-06-20 19 views
5

que se dan cuenta de que puedo anteponer cosas a un elemento usando:¿Cómo anteponer el texto (no HTML) en jQuery?

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

Sin embargo, si myText es, digamos, "<span>", en realidad quiero que aparezca ese texto, pero .prepend() habría lugar anteponer un elemento span vacía. ¿Cuál es la forma recomendada de resolver esto? ¿Realmente tengo que escanear HTML manualmente el texto o hay algo más elegante?

Respuesta

4

Se puede crear un textNode y poner el contenido allí y prepend que:

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

ejemplo: http://jsfiddle.net/niklasvh/gCKHe/

+0

hola, este violín no está funcionando en caso de que div tiene "

" html. si tiene alguna solución para esa oferta PLZ. TIA :) –

1

entidades HTML están bien, en mi opinión:

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

Usted puede automatice las entidades con la sugerencia que se encuentra en http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

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

Si también desea crear la función de PHP htmlentities en Javascript, puede utilizar el código disponible en proyecto PHP-JS: http://phpjs.org/functions/htmlentities:425

O puede simplificar envolviendo la punta anterior en una función:

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

En ambos casos, se utiliza la función htmlentities así:

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

Puede utilizar la función text en lugar de prepend, y sólo tiene que añadir el texto original al final del nuevo texto:

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

+2

¿Qué sucede si el * elemento * original también contiene html? Todo estará ** perdido **. – Niklas

+0

De hecho ... ¡ese es un buen punto! Tu método es indudablemente mejor. –

Cuestiones relacionadas