使用jQuery选择一定数量的直接同级

使用jQuery选择一定数量的直接同级,jquery,jquery-selectors,Jquery,Jquery Selectors,我有多个这样的div: <div class="small"></div> <div class="small"></div> <div class="small"></div> <div class="small"></div> <div class="large"></div> <div class="large"></div> <div

我有多个这样的div:

<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>

<div class="large"></div>
<div class="large"></div>

<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="box">
    <div class="small"></div>
    <div class="small"></div>
    <div class="small"></div>
    <div class="small"></div>
</div>

我想每4个小div选择一个以另一个div包装,如下所示:

<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>

<div class="large"></div>
<div class="large"></div>

<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="small"></div>
<div class="box">
    <div class="small"></div>
    <div class="small"></div>
    <div class="small"></div>
    <div class="small"></div>
</div>

正如您从第一个示例中看到的,可以有4个以上的相邻分区,但我仍然希望每4个小分区分组一次


任何想法都将不胜感激。谢谢

以下是我过去的做法

var smallDivs = $('div.small'),
    chunkLength = 4;

for (var i = 0, length = smallDivs.length; i < length; i += chunkLength) {
    smallDivs.slice(i, i + chunkLength).wrapAll('<div class="box" />');
}​

当然,对于不支持
document.querySelectorAll()
document.getElementsByClassName()
的旧浏览器,请将选择代码的元素替换为

var divs = document.getElementsByTagName('div'),
    smallDivs = [];

for (var i = 0, length = divs.length; i < length; i++) {
    if ((' ' + divs[i].className + ' ').indexOf(' small ') >= 0) {
        smallDivs.push(divs[i]);
    }
}
var divs=document.getElementsByTagName('div'),
smallDivs=[];
对于(变量i=0,长度=divs.length;i=0{
小divs.push(divs[i]);
}
}

.

以下是我过去的做法

var smallDivs = $('div.small'),
    chunkLength = 4;

for (var i = 0, length = smallDivs.length; i < length; i += chunkLength) {
    smallDivs.slice(i, i + chunkLength).wrapAll('<div class="box" />');
}​

当然,对于不支持
document.querySelectorAll()
document.getElementsByClassName()
的旧浏览器,请将选择代码的元素替换为

var divs = document.getElementsByTagName('div'),
    smallDivs = [];

for (var i = 0, length = divs.length; i < length; i++) {
    if ((' ' + divs[i].className + ' ').indexOf(' small ') >= 0) {
        smallDivs.push(divs[i]);
    }
}
var divs=document.getElementsByTagName('div'),
smallDivs=[];
对于(变量i=0,长度=divs.length;i=0{
小divs.push(divs[i]);
}
}

.

您使用
slice
gt()
lt()
见下面的例子

$(".small").slice(4,10).wrapAll('<div class"smallWrapper"></div>');
$(“.small”).slice(4,10).wrapAll(“”);

$(“.small:gt(5):lt(10)”).wrapAll('

您使用
slice
gt()
lt()
见下面的例子

$(".small").slice(4,10).wrapAll('<div class"smallWrapper"></div>');
$(“.small”).slice(4,10).wrapAll(“”);

$(“.small:gt(5):lt(10)”).wrapAll('

您是否必须考虑其他元素,如您的“大”元素可能介于两者之间,这样一组4个“小”元素可能与“大”元素重叠?您是否必须考虑其他元素,如您的“大”元素可能介于两者之间,这样一组4个“小”元素可能与“大”元素重叠?