2010-10-19 6 views
5

Dies ist mein Code so weit:Wie mehrmals ersetzen?

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

Dies ist nur einmal funktioniert, aber es hat für alle diese arbeiten "|" ...

irgendwelche Ideen?

+1

Beachten Sie, dass() ist ein JavaScript-Aufruf ersetzen und ist nicht Teil von jQuery – slolife

Antwort

14

hinzufügen /g Modifikator:

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

Mehr Info:

Der g-Modifikator ein globalen Spiel ausführen verwendet wird (Finden Sie alle Spiele eher als nach dem ersten Spiel zu stoppen) .

+2

'ersetzen (/ \ |/g, '
')', mehr korrekt. –

+0

@Chris: Aktualisiert Danke :) – Sarfraz

+0

das 'richtiger' funktioniert! Ich muss reguläre Ausdrücke lernen, thx mates. – Thomas

0

Hallo einen Modifikator zu Ihrem regulären Ausdruck hinzufügen, indem Sie den "/ g" nach "|"

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

Sie müssen ein Regex-Literal verwenden. JavaScript wandelt Zeichenketten im laufenden Betrieb nicht in Regex-Literale um. – BoltClock

2

Wenn Sie 1.4 jQuery verwenden, können Sie dies tun, mehr schön die .html(function)) Signatur:

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

Das heißt, Sie müssen nicht eine zweite jQuery-Instanz erstellen und sollte besser.

+0

+1: Nützlich; Ich hatte vorher von diesem Aufruf von .html() nichts gewusst. Guter Anruf! –

+0

Schöne Lösung, und wenn die zweite Klammer ".replace (...)" ignorieren, funktioniert es wie ein Charme. Danke. – Thomas

+0

Fest, danke .. – lonesomeday