Очевидно, что unwrap не работает, так как span содержит только текстовые узлы, а jquery слишком плохо обрабатывает текстовые узлы... это работает (вы можете использовать также jQuery.text вместо jQuery.html, если вы уверены, что span содержит только текст):
$('li a span').replaceWith($('li a span').html());
Изменить. На самом деле кажется, что unwrap работает, если вы используете jQuery.contents для работы вокруг jQuery невозможность прямого выбора текстовых узлов:
$('li a span').contents().unwrap();
Ответ 2
$('li').find('span').remove();
или
$('li').find('span').detach();
Если вы хотите удалить только упаковку, попробуйте
var buffer = $('li').find('span').text();
$('li').find('span').parent().html(buffer);
Ответ 3
Unwrap должен работать. Возможно, вы не выбрали диапазон, который хотите развернуть. Вы можете попробовать следующий код, который должен успешно выбрать этот диапазон:
$("li a span").unwrap()
С вашего вопроса немного непонятно, что именно вы пытаетесь сделать. Также неясно, есть ли у вас проблемы с селекторами или с jQuery api. Чтобы получить лучший дескриптор селекторов jquery, я рекомендую установить firebug и firequery, так как это действительно поможет вам понять, что вы выбираете.
Ответ 4
$("span").each(function() {
var content = $(this).text();
$(this).remove();
$("a").html(content);
});