jQuery si div contiene este texto, reemplace esa parte del texto

Como dice el título, quiero reemplazar una parte específica del texto en un div.

La estructura se ve así:

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

Y quiero reemplazar solo "contiene" con "hola a todos", por ejemplo. No puedo encontrar una solución para esto.

preguntado el 04 de julio de 12 a las 08:07

¿Qué tal si el texto fuera 'Este div contiene algún texto que contiene algunas letras' y deseo cambiar el primero que contiene, no el segundo? O simplemente seleccione cualquier palabra y se cambiará por una predefinida. -

5 Respuestas

Puede utilizar el text método y pasar una función que devuelve el texto modificado, usando el nativo String.prototype.replace método para realizar el reemplazo:

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

Aquí hay una ejemplo de trabajo.

Respondido 04 Jul 12, 08:07

Puede usar regex /iwantreplacethis/g para todas las ocurrencias - Aiphee

Muchas gracias por esto :) una simple pregunta: ¿por qué esto no funciona sin la devolución? aaron matthews

@AaronMatthews Esta respuesta fue hace mucho tiempo, pero creo que sería porque jQuery text El método, cuando se le pasa una función, establece el texto de la selección en el valor de retorno de esa función. Sin el return el texto sería reemplazado por nada. - James Allardice

Si es posible, podría envolver la(s) palabra(s) que desea reemplazar en una etiqueta de intervalo, así:

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

Luego puede cambiar fácilmente su contenido con jQuery:

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

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

Respondido 04 Jul 12, 08:07

Muy simple, solo use este código, conservará el HTML, mientras elimina solo el texto sin envolver:

jQuery(function($){

    // Replace 'td' with your html tag
    $("td").html(function() { 

    // Replace 'ok' with string you want to change, you can delete 'hello everyone' to remove the text
          return $(this).html().replace("ok", "hello everyone");  

    });
});

Aquí hay un ejemplo completo: https://blog.hfarazm.com/remove-unwrapped-text-jquery/

Respondido 17 Abr '18, 17:04

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

Respondido 04 Jul 12, 08:07

Puede utilizar el contiene 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"));

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Respondido 04 Jul 12, 08:07

esto reemplazará más de una palabra si mi cadena contiene más de una palabra objetivo, ¿cuáles serán entonces? - Tamaghna Banerjee

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.