使用jQuery用元素包装元素内容的子字符串

问题描述 投票:1回答:2

我有一个逗号分隔的链接列表,如下所示:

<a href="#">link</a>,
<a href="#">link</a>,
<a href="#">link</a>,
<a href="#">link</a>,
<a href="#">link</a>,
<a href="#">link</a>
<div></div>

现在我想将链接从位置3包装到最后一个,以便它看起来像:

$("a").eq(1).nextUntil("div").wrapAll('<span>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#">link</a>,
<a href="#">link</a>,
<span>
    <a href="#">link</a>,
    <a href="#">link</a>,
    <a href="#">link</a>,
    <a href="#">link</a>
    </span>
<div></div>

我试过这样的:

    <a href="#">link</a>,
    <a href="#">link</a>,
    <span>
    <a href="#">link</a>,
    <a href="#">link</a>,
    <a href="#">link</a>,
    <a href="#">link</a>
    </span>
    <div></div>

但是,这不包括逗号,结果如下所示:

<a href="#">link</a>,
<a href="#">link</a>,
<span>
    <a href="#">link</a>
    <a href="#">link</a>
    <a href="#">link</a>
    <a href="#">link</a>
    </span> ,,,
<div></div>

如何在嵌套中包含逗号?

但是:ぁzxswい

javascript jquery html dom
2个回答
1
投票

好吧,我终于搞清楚了。你在span中选择你想要的第一个元素,然后解析DOM并自己创建一个元素数组,而不是让jQuery这样做。然后你可以像你一样包装数组,它将包括逗号......

$("a").eq(2).each(function(){ var $elements = $(this); var next = this.nextSibling; while (next) { if ($(next).is("div")) { break; } else { $elements.push(next); next = next.nextSibling; } } $elements.wrapAll('<span>'); });


0
投票

试试这个:

Working jsfiddle example...

如果这就是你想要的 - 我相信你想要在每个名单之后吗?


推荐问答