Javascript jQuery wrapAll:保留DOM元素的层次结构

Javascript jQuery wrapAll:保留DOM元素的层次结构,javascript,jquery,Javascript,Jquery,我在尝试将html标记包装到以下结构中的元素时遇到问题: <div id="xmlText"> <a class="w" id="0">This</a> <a class="s" id="1"> </a> <a class="w" id="2">is</a> <a class="s" id="3"> </a> <a class="w" id="

我在尝试将html标记包装到以下结构中的元素时遇到问题:

<div id="xmlText">
    <a class="w" id="0">This</a>
    <a class="s" id="1"> </a>
    <a class="w" id="2">is</a>
    <a class="s" id="3"> </a>
    <a class="w" id="4">a</a>
    <a class="s" id="5"> </a>
    <a class="w" id="6">short</a>
    <a class="s" id="7"> </a>
    <span tagName="noun" id="8"><a class="w" id="9">sentence</a></span>
    <a class="s" id="10">.</a>
</div>

这个
是
一
短的
句子
.
ID范围为6到10的元素收集在jQuery对象中:

var $selectedText = $();
var $elements = $('*', '#xmlText');
for (var i = 6; i <= 10; i++) {
    $selectedText = $selectedText.add($elements.get(i));
}
var$selectedText=$();
var$elements=$('*','#xmlText');
对于(var i=6;i您的
$('*','#xmlText')
正在查找所有子元素,一直到终端节点-例如,您正在匹配孙子、孙子等等


您可能想要
$('#xmlText').children()
,这样只会找到
节点的直接子节点。

您的建议在这种情况下有效,解决了我的问题。但我过度简化了我的问题:所有节点不共享同一个父节点。它们位于不同的树中。
<span tagName="group"></span>
$selectedText.wrapAll('<span tagName="group"></span>');
<div id="xmlText">
    […]
    <a class="s" id="5"> </a>
    <span tagName="group">
        <a class="w" id="6">short</a>
        <a class="s" id="7"> </a>
        <span tagName="noun" id="8"><a class="w" id="9">sentence</a></span>
        <a class="s" id="10">.</a>
    </span>
</div>
<div id="xmlText">
    […]
    <a class="s" id="5"> </a>
    <span tagName="group">
        <a class="w" id="6">short</a>
        <a class="s" id="7"> </a>
        <span tagName="noun" id="8"></span>
        <a class="w" id="9">sentence</a>
        <a class="s" id="10">.</a>
    </span>
</div>