Нужно заменить все вхождения [br]
в заголовках h1
на тег </br>
. Пишу следующий код:
jQuery('h1').each(function() {
var text = jQuery(this).text();
text.replace(/\[br]/g, '</br>');
jQuery(this).text(text);
});
https://jsfiddle.net/cjq263ex/
Работать не хочет, хотя регулярное выражение, вроде, правильное.
В вашем коде есть ряд проблем:
Вы используете неправильное регулярное выражение. (На самом деле, вы забыли экранировать символ ]
.) Правильное регулярное выражение имеет вид:
/\[br\]/g
Вы не правильно осуществляете замену. Метод String.prototype.replace
возвращает обновленную строку, а не проводит замены в текущей.
Метод jQuery.text
экранирует все теги из переданной строки, заменяя управляющие символы HTML-сущностями. Вам нужно использовать метод jQuery.html
Тег br
имеет вид <br />
а не </br>
(обратите внимание на положение слеша). Ваш вариант не соответствует стандартам, хотя и должен работать в браузерах.
Таким образом, правильный код имеет вид:
jQuery('h1').each(function() {
var text = jQuery(this).text();
text = text.replace(/\[br\]/g, '<br />');
jQuery(this).html(text);
});
JSFiddle с работающим примером.
replace возвращает новую строку, не меняя текущую.
Этот метод не изменяет объект String, на котором он вызывается. Он просто возвращает новую строку.
нужно
jQuery(this).text(text.replace(/\[br\]/g, '</br>'));
как заметил @walik, если нужно вставить html вместо функции text нужно использовать html
jQuery(this).html(text.replace(/\[br\]/g, '</br>'))
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Имеется массив объектов ценУ каждого объекта цены есть её значение и условие применения, которое зависит от количество заказанных продуктов...
Хочу использовать вебсокеты для получения курса валют с биржи битфинексНо в браузере получаю ошибку