Подтвердить что ты не робот

Удалить текст с помощью jQuery

Есть ли способ удалить текст, который не завернут в любой тег, используя jQuery

<p>This is some text</p>

This is "unwrapped" text //to be removed

<span>some more text</span>

Спасибо за помощь

4b9b3361

Ответ 1

Используя ответ этот вопрос:

$(elem)
  .contents()
  .filter(function() {
    return this.nodeType == 3; //Node.TEXT_NODE
  }).remove();

Ответ 2

Во-первых, вы можете обернуть их фиктивными промежутками:

$("body").contents()
    .filter(function(){ return this.nodeType != 1; })
    .wrap("<span class='orphan'/>");

Теперь вы можете легко их удалить:

$('span.orphan').remove();

Ответ 3

FWIW..

<div class="parent-element">
<p>This is some text</p>
This is "unwrapped" text //to be removed
<span>some more text</span>
</div>

через CSS:

.parent-element { font-size: 0px; }
.parent-element p { font-size: 12px; }
.parent-element span { font-size: 14px; }

Ответ 4

Обтекание этого элемента DOM означает, что jQuery может найти его:

например:

var text = 'This is "unwrapped" text';

$("div:contains('" + text + "')").remove();

или просто:

$('p').next().remove();

Ответ 5

Это потрясающе, но в то же время следующий код не работает

$("div.myClass:has(img)").contents().filter(":text").remove();

и код из первого сообщения работает

$("div.myClass:has(img)")
  .contents()
  .filter(function() {
    return this.nodeType == 3; //Node.TEXT_NODE
  }).remove();

Важно помнить! jQuery 1.8.3.

И прежде всего я помню, что манипуляция innerHTML работает намного быстрее, чем этот подход!