我有一个逗号分隔的链接列表,如下所示:
<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>
如何在嵌套中包含逗号?
答案 0 :(得分: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>');
});
<强> Working jsfiddle example... 强>
答案 1 :(得分:0)
试试这个:
$("a").eq(1).nextUntil("div").wrapAll('</a>');
如果那就是你想要的东西 - 我相信你想要在每个名单之后吗?