Как удалить только тег с помощью jQuery?

Я хочу удалить промежуток с помощью jQuery, Я пробовал .unwrap(); но это не работает.

<div>
<ul>
<li><a href="#"><span>link</span></a></li>
<li><a href="#"><span>link</span></a></li>
</ul>
</div>

5 ответов


очевидно, unwrap не работает spans имеют только текстовые узлы внутри них, и jquery не слишком хорошо обрабатывает текстовые узлы... это работает, однако (вы можете использовать также jQuery.text вместо jQuery.html если вы уверены, что span содержит только текст):

$('li a span').replaceWith($('li a span').html());

пример работающего

редактировать: на самом деле, кажется, что unwrap работает также, если вы используете jQuery.contents чтобы обойти неспособность jquery непосредственно выберите текстовые узлы:

$('li a span').contents().unwrap();

$('li').find('span').remove();

или

$('li').find('span').detach();

Если вы хотите удалить только накрутка, попробуй

var buffer = $('li').find('span').text();
$('li').find('span').parent().html(buffer);

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

$("li a span").unwrap()

из вашего вопроса немного неясно, что именно вы пытаетесь сделать. Также неясно, возникают ли у вас проблемы с селекторами или с api jquery. Чтобы получить лучшую обработку селекторов jquery, я рекомендую вам установить Палий и firequery, а это действительно может помочь вам понять, что вы выбираете.


$("span").each(function() {
    var content = $(this).text();
    $(this).remove();
    $("a").html(content);
});