2012-07-04 37 views
56

Como dice el título, quiero reemplazar una parte específica del texto en un div.jQuery si div contiene este texto, reemplazar esa parte del texto

La estructura se parece a esto:

<div class="text_div"> 
    This div contains some text. 
</div> 

y quiero reemplazar sólo "contiene" con "todo el mundo hola", por ejemplo. No puedo encontrar una solución para esto.

+0

¿Qué pasa si el texto era 'Este div contiene un texto que contiene algunas letras' y desea cambiar el primero contiene, no el segundo uno. O simplemente seleccione cualquier palabra y se cambiará por una predefinida. – stockBoi

Respuesta

100

Usted puede utilizar el método text y pasar una función que devuelve el texto modificado, utilizando el método nativo String.prototype.replace para llevar a cabo la sustitución:

​$(".text_div").text(function() { 
    return $(this).text().replace("contains", "hello everyone"); 
});​​​​​ 

Aquí hay una working example.

+1

Esto lo hizo! Muchas gracias :) – Daniel

+1

@DanielLundahl - De nada, contenta de haber podido ayudar a :) –

+2

Puede utilizar expresiones regulares/iwantreplacethis/g para todos los ocurences – Aiphee

8
var d = $('.text_div'); 
d.text(d.text().trim().replace(/contains/i, "hello everyone")); 
4

Si es posible, se puede envolver la palabra (s) que desea reemplazar en una etiqueta span, así:

<div class="text_div"> 
    This div <span>contains</span> some text. 
</div> 

A continuación, puede cambiar fácilmente su contenido con jQuery:

$('.text_div > span').text('hello everyone'); 

Si no puede envolverlo en una etiqueta span, puede usar expresiones regulares.

3

Puede utilizar el contains selector para buscar elementos que contengan un texto específico

var elem = $('div.text_div:contains("This div contains some text")')​; 
elem.text(elem.text().replace("contains", "Hello everyone")); 

+0

esto reemplazará más de una palabra si mi cadena contiene más de una palabra objetivo, ¿qué será entonces? –

Cuestiones relacionadas