Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery仅删除标记?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 如何使用jQuery仅删除标记?

Javascript 如何使用jQuery仅删除标记?,javascript,jquery,css,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>

我想使用jQuery删除span, 我已经尝试了
.unwrap()但它不工作

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

:)

如果只想卸下包装,请尝试

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

打开包装应该可以。您可能没有成功选择要展开的范围。您可以尝试以下代码,这些代码将成功选择该范围:

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

你的问题有点不清楚你到底想做什么。还不清楚您是在使用选择器还是jQueryAPI方面遇到了问题。为了更好地处理jquery的选择器,我建议您安装和,因为它确实可以帮助您了解所选择的内容

显然,
unwrap
不起作用,因为
span
s中只有文本节点,而jquery不能很好地处理文本节点。。。但是,这是可行的(如果您确定
span
仅包含文本,则也可以使用
jQuery.text
而不是
jQuery.html
):

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

编辑:实际上,如果您使用jquery无法直接选择文本节点,那么
展开
似乎也可以工作:

$('li a span').contents().unwrap();

您是如何尝试这样做的,为什么它不工作,它在做什么?很可能您的查询是错误的,unwrap()应该可以做到这一点。请提供更多信息!它表明.unwrap()不是一个函数:(我想他想删除“span”-标记而不删除其内容,即
展开
(他似乎无法开始工作)哦-我想是的,有点先发制人地使用“使用jQuery删除span”:(
$("li a span").unwrap()
$("span").each(function() {
    var content = $(this).text();
    $(this).remove();
    $("a").html(content);
});
$('li a span').replaceWith($('li a span').html());
$('li a span').contents().unwrap();