jQuery si div contiene este texto, reemplace esa parte del texto
Frecuentes
Visto 261,771 equipos
89
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.
5 Respuestas
157
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
12
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
10
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
8
var d = $('.text_div');
d.text(d.text().trim().replace(/contains/i, "hello everyone"));
Respondido 04 Jul 12, 08:07
3
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 jquery text replace contains or haz tu propia pregunta.
¿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. - stockBoi