2011-05-05 27 views
3

我想在時間字符串中圍繞AM或PM包圍一個範圍。例如:如何在字符串中圍繞'PM'和'AM'展開一個範圍?

<span class="time">between 10:00AM and 14:00PM</span> 

變爲:

<span class="time">between 10:00<span class="suffix am">AM</span> and 14:00<span class="suffix pm">PM</span></span> 

如何獲得替代的方法來做到這一點任何線索?

回答

5

我認爲一個簡單的替換()將做到這一點:

$('.time').each(function() { 
    var newMarkup = $(this).html().replace(/AM/g, '<span class="suffix am">AM</span>') 
           .replace(/PM/g, '<span class="suffix pm">PM</span>'); 

    $(this).html(newMarkup); 
}); 

靈感來自:Fastest method to replace all instances of a character in a string

+0

或者,你可以用「後綴」事前類中添加的跨度,然後在標記測試AM/PM存在並在span上調用jQuery的addClass('am')或addClass('pm')。 – Kon 2011-05-05 15:09:37

+4

@Marcel,我很漂亮,這是一個正則表達式。 :) – Kon 2011-05-05 15:10:00

+0

嗯,是的,你是對的。 :)但是'.replace('AM',' AM','g')'不使用正則表達式,這是相當昂貴的(但也許JavaScript引擎在內部使用一)。 – 2011-05-05 15:16:08

2

你能把握的am/pm類的名字?在這種情況下,這將是一個解決方案:

$('.time').html(function(i, v) { 
    return v.replace(/(AM|PM)/g, '<span class="suffix $1">$1</span>'); 
}); 

現場演示:http://jsfiddle.net/pVWh6/