удалить все экземпляры символа в строке с помощью чего-то другого JavaScript - PullRequest
0 голосов
/ 14 марта 2012

Мне нужно заменить все <br /> пробелом. Ниже приведена строка, которая выводится динамически, и мне нужно скрыть теги br ...

M,W,Th,F 7:30 AM - 4:00 PM<br />Tu 7:30 AM - 6:00 PM<br />

Что я делаю не так? Можно ли заменить все остальные теги br запятой, кроме последней, которая будет заменена пробелом

$('.WorkingHours').text().replace(/<br />/g, " "); 

Ответы [ 5 ]

5 голосов
/ 14 марта 2012

Существует три проблемы с вашим кодом:

  1. $('.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>

  2. Вы должны избежать внутреннего обратного слеша в своем выражении. Редактировать: Если посмотреть на вывод .html(), он на самом деле не содержит <br />, но <br>.Это может зависеть от типа документа ( не рабочий пример , рабочий пример ).

  3. Необходимо присвоить значение обратноэлемент.

Возможно, вы сможете сделать

$('.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

1 голос
/ 14 марта 2012

Пара вещей:

используйте html() для получения HTML-кода узла:

var rawHTML = $('.WorkingHours').html();

Используйте \ для выхода из / в пределах вашего регулярного выражения:

/<br \/>/g

Установить в HTML возвращаемое значение функции замены:

$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');

Конечный продукт:

var rawHTML = $('.WorkingHours').html();
$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');
0 голосов
/ 14 марта 2012

Вам необходимо экранировать косую черту в <br />:

$('.WorkingHours').text().replace(/<br \/>/g, " "); 

http://jsfiddle.net/uLYrH/1

0 голосов
/ 14 марта 2012

Я думаю, вам нужно экранировать косую черту в выражении, например

$('.WorkingHours').text().replace(/<br \/>/g, " "); 
0 голосов
/ 14 марта 2012

с использованием .text() вместо .html() для удаления тегов html

.text() возвращает только внутренний текст, а не внутренний html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...