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


79

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.


¿Qué pasa 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.
stockBoi

Respuestas:


145

Puede usar el textmétodo y pasar una función que devuelva el texto modificado, usando el String.prototype.replacemétodo nativo para realizar el reemplazo:

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

Aquí tienes un ejemplo práctico .


2
Puede usar regex / iwantreplacethis / g para todas las ocasiones
Aiphee

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

2
@AaronMatthews Esta respuesta fue hace mucho tiempo, pero creo que sería porque el textmétodo jQuery , 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 returntexto, el texto sería reemplazado por nada.
James Allardice

12

Si es posible, puede 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.



6

Muy simple, solo use este código, preservará el HTML, mientras elimina solo el texto no envuelto:

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/


3

Puede utilizar el selector de contenido 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"));

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


esto reemplazará más de una palabra si mi cadena contiene más de una palabra de destino, ¿cuál será entonces?
Tamaghna Banerjee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.