JQuery / JCarousel:使用WrapInner和第n个选择器仅包装每个第8个项目

时间:2009-07-30 23:40:17

标签: jquery jcarousel

我想使用JCarousel显示UL元素,LI只包含8个图像(两行四个),如下所示: 的
<li> {
{1}}
[图像] [图像] [图像] [图像]
[图像] [图像] [图像] [图像]
<div> {
{1}} {
{1}} {
{1}}
[图像] [图像] [图像] [图像]
[图像] [图像] [图像] [图像]
</div> {
{1}}

我认为这样做的好方法是使用</li>添加一些关闭和打开标签,如下所示:

<li>

但我想我误解了<div>的性质,因为它似乎不会插入结束标记,除非它们带有开始标记。

使用</div>有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

所以,你开始使用单ulli,其中div包含一大堆图片&amp;你想把它拆分成一组li个,每个包含8个图像吗?如果是这样,这将有效:

var images = $("img");
while (images.length > 8) {
    images.slice(8, 16).appendTo("ul").wrapAll("<li><div></div></li>");
    images = images.slice(16);
}

基本上,它会从图像集合中裁掉8个图像块,然后将它们追加到ul的{​​{1}}中(它将原始的li与第1张图像保留在一起)。显然,您需要调整选择器,因为您可能在页面上有其他图像和无序列表。

编辑:解释li无法正常运行的原因 - 我相信jQuery会尝试操作DOM而不是原始HTML。因此,除非可以解析并转换为实际的DOM节点,否则您不能只追加随机的HTML块。换句话说,您传递给.after的内容实际上需要是一个有效且完整的HTML片段。所以,因为jQuery无法解决如何将“.after”这样的东西变成一个节点,所以它的作用有点奇怪(我猜这种情况下它忽略了两个初始的关闭标签,因为它们不是' t自己有意义然后创建</div></li><li><div>&amp; li节点&amp;然后为你自动关闭它们。)