2010-10-19 18 views
5

Este es mi código hasta ahora:¿Cómo reemplazar más de una vez?

$("h1.intro:contains('|')").each(function() { 
    $(this).html($(this).html().replace('|','</span><br /><span>')) 
}); 

Esto funciona sólo una vez, pero tiene que trabajar para todos esos "|" ...

alguna idea?

+1

Tenga en cuenta que reemplazar() es una llamada javascript y no es parte de jQuery – slolife

Respuesta

14

Añadir /g modificador:

$("h1.intro:contains('|')").each(function() { 
    $(this).html($(this).html().replace(/\|/g, '</span><br /><span>')); 
}); 

Más información:

El modificador g se utiliza para realizar una comparación global (Encontrar todos los partidos en lugar de detenerse después de que el primer partido) .

+2

'sustituir (/ \ |/g, '
')', más correctamente. –

+0

@Chris: gracias actualizadas :) – Sarfraz

+0

¡el 'más correcto' funciona! Tengo que aprender expresiones regulares, compañeros thx. – Thomas

0

Hola añadir un modificador a su expresión regular mediante la adición de la "/ g" después de "|"

$("h1.intro:contains('|')").each(function() { 
    $(this).html($(this).html().replace("|/g",'</span><br /><span>')) 
}); 
+1

Necesita usar un literal de expresión regular. JavaScript no convierte cadenas en literales de expresiones regulares sobre la marcha. – BoltClock

2

Si está utilizando jQuery 1.4, se puede hacer esto más bien el uso de la firma .html(function)):

$("h1.intro:contains('|')").each(function() { 
    $(this).html(function(idx, oldContent) { 
     return oldContent.replace(/\|/g, '</span><br /><span>'); 
    }); 
}); 

Esto significa que usted no tiene que crear una segunda instancia jQuery y debe funcionar mejor.

+0

+1: Útil; No sabía acerca de esta invocación de .html() antes. ¡Buena llamada! –

+0

Buena solución, y cuando se ignora el segundo paréntesis ".replace (...))" funciona como un amuleto. gracias. – Thomas

+0

Solucionado, gracias .. – lonesomeday

Cuestiones relacionadas