将nodeList元素分组到单独的组中
grouping nodeList elements into separate Groups
我有以下节点列表
['<div class="item">1</div>', '<div class="item">2</div>', '<div class="item">3</div>', '<div class="item">4</div>']
以及下面的函数,它接受一组元素的数量,并生成由divs 包装的元素组
function groupElms (nOfElms) {
var count = 0;
[].forEach.call(nL, function (item) {
count++;
});
}
假设noOfElms
是2,那么函数应该生成类似于的元素
<div>
<div class="item">1</div>
<div class="item">2</div>
</div>
<div>
<div class="item">3</div>
<div class="item">4</div>
</div>
如果noOfElms
是3,它应该像一样
<div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
<div>
<div class="item">4</div>
</div>
我不明白如何做到这一点。有人能帮我做这个吗。
您可以简单地循环您的项目,并将其中的每个N
放入创建的包装中,如下所示:
function groupNodes(list, groupBy)
{
var list = [].slice.call(list);
var parent = list[0].parentElement;
for (var i = 0; i < list.length; i += groupBy)
{
var lastWrapper = document.createElement('div');
lastWrapper.className = 'wrapper';
parent.appendChild(lastWrapper);
[].forEach.call(list.slice(i, i + groupBy), function(x) {
lastWrapper.appendChild(x);
});
}
}
groupNodes(document.getElementsByClassName('item'), 3);
.wrapper {
border: 2px solid black;
}
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
</div>
请注意,假设所有这些项目都是兄弟项目。否则,它们将全部移动到第一个项目的父项。
使用jQuery .wrap()
函数可以更容易地完成:
function groupNodes(selector, groupBy)
{
var $list = $(selector);
for (var i = 0; i < $list.length; i += groupBy)
$list.slice(i, i + groupBy).wrapAll('<div class="wrapper"></div>');
}
groupNodes('.item', 3);
.wrapper {
border: 2px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
</div>
使用以下
比方说
var a = ['<div class="item">1</div>', '<div class="item">2</div>', '<div class="item">3</div>', '<div class="item">4</div>'];
那么函数应该像下面的一样编写
function groupElms (nOfElms) {
var count = 1;
a.forEach(function (item) {
if(count == 1) {
var tempDiv = document.createElement("div");
}
tempDiv.appendChild(item);
if(count == nOfElms) {
document.body.appendChild(tempDiv);
delete tempDiv;
count=1;
}
count++;
});
}
相关文章:
- 显示单独数组中两个数组的相同元素
- 单独检测共享同一类的元素
- 在一个html模板中使用(点击)事件来控制单独模板Angular 2中的[hidden]元素
- 在单独的容器中拖放,并调整放置的元素的位置
- 使元素单独更改颜色
- 如何从php中的会话数组中提取未知数量的元素,并将它们用作JavaScript中的单独变量
- d3.js如何为国家地图中的每个州创建一个单独的元素
- 单击时将嵌套数组/对象值显示到单独的元素中
- 为类中的所有元素提供单独的 Id Javascript
- 获取动态背景颜色,使用 LESS 应用于单独的元素
- jQuery - 从数组中获取的效果元素(单独)
- 有没有办法在没有单独对象的情况下克隆 DOM 元素
- 从单独的 html 页面创建一个 dom 元素
- 在 CSS 中有一个单独的伪选择器,以显示有关一行中多个元素的信息
- 如何将点击事件克隆并添加为单独的元素 - 没有闭包
- 多个指令,一个元素具有单独的作用域
- jQuery单击功能可从元素中删除属性并在单独单击时恢复属性
- 使用 jQuery 在 HTML 表中显示单独的 XML 元素
- 固定背景滚动效果相对于背景的单独元素
- 将绑定应用于整个dom或需要它的每个单独元素