我有一个逗号分隔的链接列表,如下所示:
<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>
如何在嵌套中包含逗号?
演示:http://jsfiddle.net/aa9GJ/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>');
});
工作 jsfiddle 示例...
试试这个:
$("a").eq(1).nextUntil("div").wrapAll('</a>');
如果这就是你想要的 - 我相信你想要在每个列表之后对吗?