Я хочу удалить span с помощью jQuery,
Я пробовал .unwrap();
, но он не работает.
<div>
<ul>
<li><a href="#"><span>link</span></a></li>
<li><a href="#"><span>link</span></a></li>
</ul>
</div>
Я хочу удалить span с помощью jQuery,
Я пробовал .unwrap();
, но он не работает.
<div>
<ul>
<li><a href="#"><span>link</span></a></li>
<li><a href="#"><span>link</span></a></li>
</ul>
</div>
Очевидно, что 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();
$('li').find('span').remove();
или
$('li').find('span').detach();
Если вы хотите удалить только упаковку, попробуйте
var buffer = $('li').find('span').text();
$('li').find('span').parent().html(buffer);
Unwrap должен работать. Возможно, вы не выбрали диапазон, который хотите развернуть. Вы можете попробовать следующий код, который должен успешно выбрать этот диапазон:
$("li a span").unwrap()
С вашего вопроса немного непонятно, что именно вы пытаетесь сделать. Также неясно, есть ли у вас проблемы с селекторами или с jQuery api. Чтобы получить лучший дескриптор селекторов jquery, я рекомендую установить firebug и firequery, так как это действительно поможет вам понять, что вы выбираете.
$("span").each(function() {
var content = $(this).text();
$(this).remove();
$("a").html(content);
});
.remove()
:)