Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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打开元素的一部分?_Javascript_Jquery - Fatal编程技术网

Javascript打开元素的一部分?

Javascript打开元素的一部分?,javascript,jquery,Javascript,Jquery,在不移除父元素的情况下,如何展开元素 例如,如果我有以下内容 <strong>Some text <span>and some more text.</span> And a little more.</strong> 一些文本和更多文本。还有一点。 是否有javascript或jquery方法来展开跨度,从而导致 <strong>Some text </strong><span>and some more

在不移除父元素的情况下,如何展开元素

例如,如果我有以下内容

<strong>Some text <span>and some more text.</span> And a little more.</strong>
一些文本和更多文本。还有一点。
是否有javascript或jquery方法来展开跨度,从而导致

<strong>Some text </strong><span>and some more text</span><strong>And a little more.</strong>
一些文本和一些更多的文本,再多一点。
我可以使用jquery的unwrap简单地从span中删除强标记,但这会导致span之外的文本也丢失标记

var span=$(“强span”).detach();
var span = $("strong span").detach();
var strong = $("strong").contents().wrap("<strong/>").end().append(span).contents().unwrap();
var strong=$(“strong”).contents().wrap(“”).end().append(span.contents().unwrap();
var span=$(“强span”).detach();
var strong=$(“strong”).contents().wrap(“”).end().append(span.contents().unwrap()


hello allhello此文本没有要求的span
,以下是我所说的方法。我使用了jQuery,并将其分解为比简单性所需的更多的行,但是如果您愿意,可以压缩/使用内置的JS函数。在这里玩一下:


这里有一种方法:

$("strong").contents().filter(function () {
    return (this.nodeType==3)
}).wrap('<strong/>').parent().unwrap();
$(“strong”).contents().filter(函数(){
return(this.nodeType==3)
}).wrap(“”).parent().unwrap();

这导致:

<strong>Some text </strong><span>and some more text.</span><strong> And a little more.</strong>
一些文本还有一些文本。还有一点。

是否总是这一对:
strong
span
?Idk关于展开,但您不能将span作为强元素的子元素删除,然后将其附加到强标记的父元素吗?@pm77-1,不,它是strong、em、u、strike、span、ul和ol的混合体。真的,能够打开ol和ul符合我的目的,但我想在我的目的上更一般。基本上,我需要从任何父元素(除div/body之外)中展开列表@taylorc93,实际上这是个好主意。我不太确定如何附加元素,因为我没有太多地使用jquery。如果你的解决方案是在中间的某个位置,如果两边都有文本,那么这仍然有效吗?它会像这样的代码<强> PistSpultStult<强> >代码>代码>强>强> <强>跨度< /代码>谢谢你提供答案。我意识到我的问题有点模棱两可,我已经澄清了。类似的解决方案是否适用于新的示例?我看到了区别。你介意我问你为什么那样需要吗?像这样添加额外的结束标记是冗长和不必要的抱歉,完全没有正确读取更改。不管我的第一句话是什么,我错了。我想从文本的某些部分删除样式,但不想从其他部分删除样式。我以span为例,span内的内容不应该粗体,而span外的内容应该粗体。我将如何改变这种方法来处理新的示例?不用担心,我感谢您的帮助和建议。我非常喜欢这种方式,但它很密集。对于那些不理解的人,这将获取强元素(textNode类型为3)的子元素的所有文本节点,将所有文本节点包装在强标记中,然后删除包装所有内容的原始强标记。这正是我试图做的。多谢各位@taylorc93,如果你有一个更快的解决方案,你能用它编辑你的答案吗?再次感谢您的时间。我非常怀疑我能找到比这更好的解决方案。即使我在这里学到了一些东西,也没有意识到DOM中的每个节点都有这样一个可访问的类型。@taylorc93-感谢您添加了解释。我忙于编写代码。谢谢。@user3591017-很高兴我能帮忙。
<strong>Some text </strong><span>and some more text.</span><strong> And a little more.</strong>