Javascript / JQuery заменить текст удаляет форматирование Div

0

http://jsfiddle.net/2EvGF/

JS

$('.msgln').each(function() {
    var text = $(this).text();
    $(this).text(text.replace('Admin', 'sys-admin')); 
});

HTML

<div class='msgln'><b>Admin</b>:<i> Chat cleared</i><br></div>

Замена класса '.msgln' удаляет форматирование (жирным шрифтом, курсивом и т.д.). Как я могу это решить?

Теги:
replace

3 ответа

0

Я согласен с так называемым базовым решением. Здесь моя версия с небольшим обновлением, так как вы можете иметь тег, представленный в других частях HTML с классом msgln. Как насчет следующего?

HTML

<div class='msgln'><b><span class="username">Admin</span></b>:<i> Chat cleared</i><br></div>

JS

$('.msgln span.username').each(function() {
    var text = $(this).text();
    $(this).text(text.replace('Admin', 'sys-admin')); 
});
0

Это может происходить из-за того, что правила CSS для bold, italcs etc Могут быть определены для класса msgln, поэтому после удаления класса связанные с ним правила CSS также будут удалены.

Решение состоит в том, чтобы добавить еще один класс, где определены одни и те же правила CSS

0

Как сказано здесь, http://api.jquery.com/text/#text2, он заменяет весь внутренний html заданным текстом.

Вам нужно перейти к элементу с текстом, который вы хотите заменить. В вашем случае это будет .msgln b

$('.msgln b').each(function() {
    var text = $(this).text();
    $(this).text(text.replace('Admin', 'sys-admin')); 
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню