У меня есть простой HTML, который мне нужен для простого форматирования.
A nice house was found in <b>Toronto</b>.
Мне нужно удалить жирный шрифт, но оставить предложение без изменений.
Как это возможно в jQuery?
$('b').contents().unwrap();
При этом выбираются все <b>
элементы, затем используется.contents()
для нацеливания текстовое содержимое <b>
, а затем.unwrap()
для удаления его родительского <b>
элемента.
Для достижения максимальной производительности всегда оставайтесь родным:
var b = document.getElementsByTagName('b');
while(b.length) {
var parent = b[ 0 ].parentNode;
while( b[ 0 ].firstChild ) {
parent.insertBefore( b[ 0 ].firstChild, b[ 0 ] );
}
parent.removeChild( b[ 0 ] );
}
Это будет намного быстрее, чем любое решение jQuery, представленное здесь.
unwrap()
и не мог вспомнить, как получить текстовую часть, забыл о.contents()
- отлично..replacewith()
дополнительным обходом DOM ... если это<b>
тег только с HTML, он становится еще быстрее.parent.normalize()
послеparent.removeChild(...
слияния смежных текстовых узлов. Это было полезно, если вы постоянно изменяете страницу.Вы также можете использовать
.replaceWith()
, как это:Или, если вы знаете, что это просто строка:
Это может иметь большое значение, если вы разворачиваете много элементов, поскольку любой из указанных выше подходов значительно быстрее, чем стоимость
.unwrap()
.источник
Самый простой способ удалить внутренние элементы html и вернуть только текст - это функция JQuery .text () .
Пример:
jsFiddle Demo
источник
Как насчет этого?
Первая строка копирует HTML-содержимое
b
тега в местоположение непосредственно послеb
тега, а затем вторая строка удаляетb
тег из DOM, оставляя только его скопированное содержимое.Я обычно заключаю это в функцию, чтобы упростить использование:
Весь код на самом деле является чистым Javascript, используется только JQuery для выбора целевого элемента (
b
тег в первом примере). Функция просто чистая JS: DТакже посмотрите на:
источник
источник
Еще одно нативное решение (в кофе):
Я не знаю, если это быстрее, чем решение user113716, но это может быть легче понять для некоторых.
источник
Самый простой ответ - умопомрачительный:
externalHTML поддерживается вплоть до Internet Explorer 4!
Вот, чтобы сделать это с JavaScript даже без JQuery
Это должно работать во всех основных браузерах, включая старые IE. в недавнем браузере мы можем даже вызывать forEach прямо в списке узлов.
источник