Estoy tratando de hacer una búsqueda y reemplazar con todas las instancias de la misma palabra, sin tener en cuenta las mayúsculas y minúsculas al usar .contains() pero parece que no está funcionando y es el caso sensible. Aquí está el código de lo que tengo ahora:Búsqueda y reemplazo de Jquery concontiene
<p>some text</p>
<p>Some Text</p>
<p>Some TEXT</p>
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
$('p').filter(":contains('some text')").each(function(){
$(this).text($(this).text().replace("some text", "replace with new text"));
});
Esto sólo cambia el primer texto, debido a la misma causa se puede ver en el ejemplo en el violín de JS aquí http://jsfiddle.net/ka82V/
Me gusta este y estoy de acuerdo con usted en que no debemos anular jQuery, sería una mala idea. Pero tiene una pregunta, ¿para qué sirve i.test? – Kevin
'.test' es un método en el objeto' RegExp' en JavaScript, que ejecuta la expresión regular contra el argumento (en este caso '$ (this) .text()') y devuelve verdadero o falso en función de si coincide . El objeto 'RegExp' en este caso es en realidad un literal (al igual que" alguna cadena "es un literal' objeto de cadena '): '/ some text/i'. La parte 'i' dice que no distingue entre mayúsculas y minúsculas. –
@ChrissPratt Veo gracias, todavía no he aprendido RegExp, supongo que es por eso que estaba teniendo problemas con la búsqueda y el reemplazo, pero está funcionando, muchas gracias – Kevin