Как удалить только тег с помощью jQuery? - PullRequest
10 голосов
/ 27 апреля 2010

Я хочу удалить диапазон, используя jQuery, я пробовал .unwrap();, но он не работает.

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

Ответы [ 5 ]

21 голосов
/ 27 апреля 2010

Очевидно, что 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();
3 голосов
/ 27 апреля 2010
$('li').find('span').remove();

или

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

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

var buffer = $('li').find('span').text();
$('li').find('span').parent().html(buffer);
0 голосов
/ 27 апреля 2010
$("span").each(function() {
    var content = $(this).text();
    $(this).remove();
    $("a").html(content);
});
0 голосов
/ 27 апреля 2010

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

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

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

0 голосов
/ 27 апреля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...