2012-07-03 14 views
7

Estoy tratando de escribir una función replacewith en jQuery que reemplazará palabras específicas con html.reemplazar texto sin formato con html usando jQuery

Básicamente estoy tratando de reemplazar algo así como [this] con <span class='myclass'> mientras se carga el documento. He buscado un par de muestras pero las dos cosas que vi no me permitieron llegar al trabajo. Todavía estoy aprendiendo jQuery, así que espero que alguien pueda darme un par de sugerencias sobre qué probar.

Gracias de antemano, Steven.

HTML/texto:

[this]hello world![/this]​ 

JavaScript:

$(document).ready(function() {  
    // Using just replace 
    $("body").text().replace(/[this]/g,'<b>') 
});​ 

--EDIT--

He hecho algunos cambios en la función utilizando demostración de Nir continuación. Aquí hay algunos detalles más sobre lo que estoy haciendo. Estoy tratando de hacer una fracción en línea, que ya tengo las clases apropiadas y todo lo demás. Funciona bien cuando está en html, pero cuando ejecuto la función jQuery parece que no funciona.

Es obvio que las etiquetas son reemplazadas, pero mi CSS realmente no parece estar funcionando como mencioné.

Heres un enlace al HTML HERE

y aquí hay un enlace a la jsFiddle HERE

$(document).ready(function() {  

// Using just replace 
var text = $('body').text(); 
$("body").html(text.replace(/\[math\]/g,'<span class="container">').replace(/\[\/math\]/g,'</span>')); 

var textt = $('body').text(); 
$("body").html(textt.replace(/\[top\]/g,'<div class="containme">').replace(/\[\/top\]/g,'</div>')); 

var textl = $('body').text(); 
$("body").html(textl.replace(/\[line\]/g,'<div class="borderme">&nbsp;</div>')); 

var textb = $('body').text(); 
$("body").html(textb.replace(/\[bot\]/g,'<div class="containme2">').replace(/\[\/bot\]/g,'</div>')); 
});​ 

Esta HTML

<span class="readme">Whats up, here's a fraction.&nbsp; 
<span class="container"> 
    <div class="containme">1</div> 
    <div class="borderme">&nbsp;</div> 
    <div class="containme2">2</div> 
    </span> 
&nbsp;&nbsp;Hello? Whats up, here's a fraction.&nbsp; 
    <span class="container"> 
    <div class="containme">1</div> 
    <div class="borderme">&nbsp;</div> 
    <div class="containme2">2</div> 
    </span> 
    &nbsp;&nbsp;Hello? Whats up, here's a fraction.&nbsp; 
    </span> 

a este shortend marcado

<span class="readme"> Whats up, here's a fraction. [math][top]1[/top][line][bot]2[/bot][/math] </span> 
+0

? ¿Y solo estás insertando una etiqueta de apertura? ¿Qué pasa con la etiqueta de cierre para ese elemento insertado? –

+0

(a) no ha definido su violín a usar jQuery (b) '.replace' devuelve una nueva cadena: Por favor, no https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace –

Respuesta

6

Javascript replace() devuelve una nueva cadena, que no altera la cadena original, por lo que probablemente debería ser:

$(document).ready(function() {  
    var content = $("body").text().replace(/\[this\]/g,'<b>') 
    $("body").html(content); 
});​ 

en cuenta que los soportes tendrán para escapar, de lo contrario reemplazará cada carácter dentro de los corchetes con <b>.

Aquí hay un ¿De qué manera la cadena que está buscando por la influencia de la salida esperada FIDDLE

+0

A [(ligeramente actualizado) JS Fiddle] (http://jsfiddle.net/davidThomas/juTtG/20/) para evitar el segundo 'replace()' en su violín vinculado. –

+0

esta es una gran demostración, muchas gracias. Voy a hacer algunas ediciones en mi OP. Intenté con la respuesta de Nic antes de ver la tuya y, de hecho, reemplacé la que necesitaba, pero parece que mi CSS no funciona correctamente. ¿podrías echar un vistazo a esta demostración para darme algunas sugerencias? http://jsfiddle.net/stevenschemers/juTtG/28/ – xxstevenxo

2

aquí es un demo that uses regex:

$(document).ready(function() {  
    // Using just replace 
    var text = $('body').text(); 
    $("body").html(
     text.replace(/\[this\]/g,'<b>').replace(/\[\/this\]/g,'</b>') 
    ); 
}); 
+0

Simplemente enlace a la solución, también incluya el código en su respuesta. Si los enlaces dejan de estar disponibles por cualquier razón, su "respuesta" se vuelve inútil. –

+0

gracias por la demostración. Agregué algunas líneas más para intentar completar la función de lo que estoy tratando de hacer, y parece que la rompí: |. ¿Te importaría mirar este violín? http://jsfiddle.net/stevenschemers/juTtG/24/ – xxstevenxo

+0

¿Qué estás tratando de hacer? – Nir

Cuestiones relacionadas