2011-05-30 18 views
27

Con el texto de la siguiente manera:JavaScript/jQuery: reemplazar parte de la cadena?

<div class="element"> 
<span>N/A, Category</span> 
</div> 

quiero para deshacerse de todas las apariciones de N/A.

Aquí es mi intento:

$('.element span').each(function() { 
     console.log($(this).text()); 
     $(this).text().replace('N/A, ', ''); 
    }); 

El texto registrada es el texto dentro de la división de modo selector está bien.

¿Qué estoy haciendo mal aquí?

+1

'replace' ** devuelve ** una cadena, no realiza cambios en el lugar. E incluso entonces, el texto se establecería en el elemento automáticamente. –

Respuesta

75

Es necesario configurar el texto después de la llamada reemplazar:

$('.element span').each(function() { 
     console.log($(this).text()); 
     var text = $(this).text().replace('N/A, ', ''); 
     $(this).text(text); 
    }); 

Aquí es su trabajo código: http://jsfiddle.net/ZSXb6/


Aquí hay otra manera fresca que puede hacerlo (sombrero de punta @Felix Rey) :

$(".element span").text(function(index, text) { 
    return text.replace("N/A, ", ""); 
}); 
+15

O pase una función: '$ (this) .text (función (i, texto) {return text.replace (...);});' –

+0

@Felix: Buena llamada, siempre me olvido de esa versión. –

+0

+1 para la segunda versión, votó una de las respuestas de @Felix para transferirlo a él :). – kapa

10

debe ser así

$(this).text($(this).text().replace('N/A, ', '')) 
Cuestiones relacionadas