Как удалить только тег с помощью 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
не работает span
s имеют только текстовые узлы внутри них, и 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);
});