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

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

У меня есть html, который выглядит так:

<div>
    <span class="red">red text</span> some more text <span class="blue">blue text</span>
</div>

Что я хочу сделать, это использовать jQuery для удаления всех интервалов внутри div независимо от прикрепленного класса, но оставить текст в тегах span позади. Таким образом, конечный результат будет:

<div>
    red text some more text blue text
</div>

Я попытался использовать метод unwrap(), но он разворачивает div. Я также пытался удалить элементы, но удаляет элементы и их текст.

4b9b3361

Ответ 1

jQuery 1.4 +

Вы не хотите разворачивать диапазон, вы хотите развернуть его содержимое:

$("span").contents().unwrap();

Онлайн-демонстрация: http://jsbin.com/iyigi/edit

jQuery 1.2 +

Для более ранних версий jQuery вы можете сделать следующее:

$("span").replaceWith(function () {
    return $(this).text();
});

Онлайн-демонстрация: http://jsbin.com/iyigi/40/edit

Ответ 2

Не хватит ли простого $('#my-div').text ($('#my-div').text ()), не прибегая к распаковке?

Ответ 3

$(mydiv).html($(mydiv).text()) 

должен сделать трюк.