Существует три проблемы с вашим кодом:
$('.WorkingHours').text()
не будет содержать никакого HTML (поэтому также нет тегов br
), он только возвращает текстовое содержимое элементов.
$('.WorkingHours').text()
возвращает:
M,W,Th,F 7:30 AM - 4:00 PMTu 7:30 AM - 6:00 PM
, тогда как $('.WorkingHours').html()
возвращает:
M,W,Th,F 7:30 AM - 4:00 PM<br>Tu 7:30 AM - 6:00 PM<br>
Вы должны избежать внутреннего обратного слеша в своем выражении. Редактировать: Если посмотреть на вывод .html()
, он на самом деле не содержит <br />
, но <br>
.Это может зависеть от типа документа ( не рабочий пример , рабочий пример ).
Необходимо присвоить значение обратноэлемент.
Возможно, вы сможете сделать
$('.WorkingHours').html(function(i, html) {
return html.replace(/<br\s*\/?>/g, " ");
});
, но было бы намного чище вообще не использовать регулярные выражения:
$('.WorkingHours').find('br').replaceWith(' ');
Находит все элементы br
и заменяет их текстовым узлом, содержащим только пробел.
DEMO
Обновление (в ответ на один из ваших комментариев): Если вы хотите заменить последний br
на полный стоп, вы можете использовать .last()
:
$('.WorkingHours')
.find('br').last().replaceWith('.')
.end().replaceWith(' ');
DEMO