Javascript .before()/.after()元素,但不自动关闭

Javascript .before()/.after()元素,但不自动关闭,javascript,jquery,html,Javascript,Jquery,Html,这就是我想做的 我调用了一个xml文件,并围绕该文件的内容创建了很多div。我想做的是在每15个div周围添加一个div。这些div具有类“item”。这些物品被封装在一个名为“容器”的分区中 我首先尝试在容器的第一个div前面添加一个open。然后我查找第十六个div并尝试添加一个结束,然后打开另一个,然后尝试通过在“项”之后添加一个结束来结束最后一个div $(“.container.item:first child”)。在(“”)之前; $(“.container.item:nth chi

这就是我想做的

我调用了一个xml文件,并围绕该文件的内容创建了很多div。我想做的是在每15个div周围添加一个div。这些div具有类“item”。这些物品被封装在一个名为“容器”的分区中

我首先尝试在容器的第一个div前面添加一个open
。然后我查找第十六个div并尝试添加一个结束
,然后打开另一个
,然后尝试通过在“项”之后添加一个结束
来结束最后一个div

$(“.container.item:first child”)。在(“”)之前;
$(“.container.item:nth child(16)”)。在(“”)之前;
$(“.container.item:最后一个子项”)。之后(“”);
我的问题是div是自动关闭的,因此显示为空div,其余的“item”显示为空div

我不确定这是jQuery还是浏览器在做这件事。但是我能做些什么来让它工作呢


我这样做是因为我想从左向右滚动容器。

您应该选择所需的组,并使用该方法将它们与容器包装在一起

示例:

$(“.container.item”).slice(0,15).wrapAll(“”)
.end().slice(15.wrapAll)(“”);
…或者要循环它,可以执行以下操作:

示例:

$(“.container.item:n子项(15n+1)”)。每个(函数(i){
$(this).nextAll('.item').andSelf()
.切片(0,15).wrapAll('');
});
……或者:

示例:

var items=$(“.container.item”);
而(项目[0]){
items=items.slice(0,15).wrapAll(“”)
.end().slice(15);
}
……或者:

示例:

$(“.container.item”)。每个(函数(i){
如果(!(i%15))
$(this.nextAll().andSelf().slice(0,15).wrapAll(“”);
});
……或者:

示例:

var items=$(“.container.item”),i=0;
而(i
类似的方法应该可以奏效。取出所有元素,并将其中15个包裹起来。然后取出接下来的15个元素并将它们包装起来。以此类推,直到没有元素剩下

var allElements = $('.container .item'),
    WRAP_BY = 15;
for (var i = 0; i < allElements.length; i += WRAP_BY) {
    //first loop, elements 0 : 15, next loop elements 15:30 and so on
    allElements.slice(i, i + WRAP_BY).wrapAll('<div class="inner-container" />');
}
var-allegements=$('.container.item'),
用=15的方式包裹U;
对于(var i=0;i
哇,回答得真快。这太棒了,我需要从中学习:)这就是我的工作。非常感谢。我以前曾多次遇到过这个问题,结果只是做了一些不同的事情。谢谢。我不知道。拉帕尔,谢谢你指出这一点。但是,如果有更多的元素需要包装,这个循环就不会抛出:)谢谢你的提问。我以前找过几次这个,但都没找到。我今天用不同的搜索方式找到了它。谢谢你的邀请!
$(".container .item").slice(0,15).wrapAll('<div class="inner-container"></div>')
                 .end().slice(15).wrapAll('<div class="inner-container"></div>');
$(".container .item:nth-child(15n+1)").each(function(i){
    $(this).nextAll('.item').andSelf()
           .slice(0,15).wrapAll('<div class="inner-container"></div>');
});
var items = $(".container .item");

while( items[0] ) {
    items = items.slice( 0,15 ).wrapAll('<div class="inner-container"></div>')
                                                              .end().slice(15);
}
$(".container .item").each(function(i) {
    if( !(i % 15) )
        $(this).nextAll().andSelf().slice( 0,15 ).wrapAll('<div class="inner-container"></div>');
});
var items = $(".container .item"),i=0;

while( i < items.length ) {
    items.slice( i,i+=15 ).wrapAll('<div class="inner-container"></div>');
}
var allElements = $('.container .item'),
    WRAP_BY = 15;
for (var i = 0; i < allElements.length; i += WRAP_BY) {
    //first loop, elements 0 : 15, next loop elements 15:30 and so on
    allElements.slice(i, i + WRAP_BY).wrapAll('<div class="inner-container" />');
}