javascript - 在 n 个元素后自动添加行(Jquery)

标签 javascript jquery html css

<分区>

我有一个程序生成的类似这样的东西:

<div class="w-row">
    <div class="w-col w-col-4 entry abc"> ... </div>
    <div class="w-col w-col-4 entry abc def"> ... </div>
    <div class="w-col w-col-4 entry def"> ... </div>
    <div class="w-col w-col-4 entry 123"> ... </div>
</div>

但是为了保持正确,我想用类为“w-row”的 div 包装每 3 列。

我的输出应该是这样的:

<div class="w-row">
    <div class="w-col w-col-4 entry abc"> ... </div>
    <div class="w-col w-col-4 entry abc def"> ... </div>
    <div class="w-col w-col-4 entry def"> ... </div>
</div>
<div class="w-row">
    <div class="w-col w-col-4 entry 123"> ... </div>
</div>

所以,这是一个 galery 插件,所以元素的数量可能会在点击过滤器后发生变化。为了显示它,我有一个小函数,正如你在这里看到的:

// show only divs, which has the current filter in its classes
    $('.entry').each(function() {
        if (!$(this).hasClass(filtername)) {
            $(this).fadeOut();
        } else {
            $(this).fadeIn();
        }
    });

我尝试添加一个计数器变量 cnt 并用一个 div “包装”每 3 个元素,但这没有用。我也尝试添加 HTML(只是一个简单的)但出于某种原因我覆盖了所有内容(猜测是因为我使用了 $.html();

谢谢你的建议

最佳答案

你可以用 .slice() 来做

var cols = $(".w-col");
for(var i = 0; i < cols.length; i+=3) {
   cols.slice(i, i+3).wrapAll("<div class='w-row'></div>");
}

这里是同样的问题和答案: Wrap every 3 divs in a div

关于javascript - 在 n 个元素后自动添加行(Jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087458/

上一篇:CSS动画导致锯齿状边缘

下一篇:CSS/JS - 在逗号分隔列表中的逗号处强制换行

相关文章:

javascript - Jquery 菜单 - 切换问题

javascript - 如何在 jquery 每个循环内的 javascript 中创建多维数组?

javascript - 如何使用 javascript 访问文本文件?

HTML <template> 在 Firefox 中为空(devtools 和 document.importNode() 之后)

javascript - 脚本似乎在 jQuery 加载之前运行 - 未捕获的 ReferenceError : $ is not defined

jQuery ~ 只获取内部 div id 名称

javascript - 如何获取表格内容并将其作为多维数组放入变量中

html - 在 css 中创建收据样式

java - 在javascript中调用java方法

javascript - 多次使用不同的值开 Jest 模拟模块