如何使用jQuery仅删除标记?

时间:2010-04-27 06:04:48

标签: javascript jquery css

我想使用jQuery删除span, 我试过了.unwrap();,但它没有用。

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

5 个答案:

答案 0 :(得分:21)

显然,unwrap不起作用,因为span内部只有文本节点,jquery也不能很好地处理文本节点......但是这样做(你也可以使用{如果您确定jQuery.text仅包含文字,则代替jQuery.html

span

Working example

编辑:实际上,如果您使用jQuery.contents来解决jquery无法直接选择文本节点的问题,$('li a span').replaceWith($('li a span').html()); 似乎也可以正常工作:

unwrap

答案 1 :(得分:3)

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

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

如果您只想删除包装,请尝试

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

答案 2 :(得分:0)

展开应该有效。您可能无法成功选择要展开的跨度。您可以尝试以下代码,该代码应成功选择该范围:

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

从你的问题中有点不清楚你到底想要做什么。目前还不清楚你是否遇到了选择器或jquery api的问题。为了更好地处理jquery的选择器,我建议你安装firebugfirequery,因为它可以真正帮助你理解你所选择的内容。

答案 3 :(得分:0)

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

答案 4 :(得分:-1)