Как развернуть текст с помощью jQuery?

Как развернуть текст из тега HTML с помощью jquery?

Например, как преобразовать этот HTML

<p>A <i>sentence</i> with <b>bold words</b>.</p>

в (т.е. удалить жирные теги)

<p>A <i>sentence</i> with bold words.</p>

используя только jQuery и не regex?

Ответы

Ответ 1

Вы можете сделать это:

  $("b").each(function() {
    $(this).replaceWith(this.childNodes);
  });

Примечание: это сохраняет любой HTML-код внутри, где .text() может преобразовать его.

Если вы хотите буквально просто разделить <b></b>, вы можете использовать Cheeso немного легче в jQuery 1.4 +:

$("p").html(function(i,h){ return h.replace(/<b>/g,'').replace(/<\/b>/g,''); }); 

Ответ 2

Сначала я полюбил wrapInner, а затем развернулся.

Например, если вы пытались развернуть гиперссылку

<a id="anId" href="#">sample text</a>

то вы можете развернуть гиперссылку через

$('#anId').wrapInner('<span/>');
$('#anId span').unwrap();

Ответ 3

Как вы это делаете, это зависит от дополнительных ограничений в вашей ситуации.

Нет общего способа разворачивания.

Если теги всегда <b>, вы можете сделать это

var h = $(elementSelector).html;
h = h.replace("<b>","");
h = h.replace("</b>","");
$(elementSelector).html(h);

Я не уверен, почему вам не нравится Regex.

Ответ 4

Чтобы развернуть только текст и ничего другого, что вы могли бы использовать:

$("b").replaceWith($("b").text());

Ответ 5

Я думаю, что полагаться исключительно на jQuery, в этом случае излишне усложняет ситуацию. Было бы проще использовать метод replace, который принимает либо нормальную строку, либо регулярное выражение.

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