Javascript 在JQuery中用相同的类(和多个类)包装div

Javascript 在JQuery中用相同的类(和多个类)包装div,javascript,jquery,Javascript,Jquery,有很多类似的问题,但没有一个像这样。 我有以下html: <div class="view-content"> <div class="section section_2">content</div> <div class="section section_2">content</div> <div class="section section_1">content</div>

有很多类似的问题,但没有一个像这样。 我有以下html:

<div class="view-content">

    <div class="section section_2">content</div>
    <div class="section section_2">content</div>
    <div class="section section_1">content</div>
    <div class="section section_4">content</div>
    <div class="section section_4">content</div>

</div>

内容
内容
内容
内容
内容
其中所有div共享.section,但另一个类是根据数据库ID动态生成的

如果我不知道动态类,如何将具有相同类的div包装到另一个div中

例如,在下面的例子中,如果我删除.section类,它将包装ok,但我的div有多个类,并且只有一个是共享的

谢谢

var classes = {};
$(".view-content > div").each(function() {
    classes[$(this).attr("class")] = true; // "section section_2"
});
for (singleClass in classes) {
    // No elements will be returned here
    $("." + singleClass).wrapAll('<div class="column" />');
}


忍者编辑。我想指出几点。这将使您的代码依赖于这样一个事实,即始终存在至少两个类,并且您需要第二个类。如果这种情况发生变化,则会中断。

如果您的
第n节始终是顺序的,您可以将其简化为单个
for
循环:

var $sections = $('div.section'),
    sCount = $sections.length;

for (var i = 0; i < sCount; ) {  

    var sClass = $sections[i].className.match(/section_\d+/).shift(),
        $section = $('.' + sClass);

    i = $section.wrapAll('<div>').filter(':last').index('div.section') + 1;
}
var$sections=$('div.section'),
Scont=$sections.length;
对于(var i=0;i

我不太明白你想做什么。你能发布你想要的最终结果的HTML吗?事实上,我想我明白了。在一个div中,你想把第4部分打包在一起吗?如果在连续div之间存在公共类,你只需在新div中包装div?当你控制HTML创建时,你应该考虑添加另一个(Data)属性来存储分组任务的ScEthyId。会更干净。由于某种原因,这使我的浏览器崩溃了。我的div是连续的,所以我不知道为什么。在JSFIDLE上,如果我更改为非顺序,它也会使浏览器崩溃,因此我怀疑我的真实代码中的某些html正在影响它。感谢它的工作,在我的代码中,我使用的是第一个类,因此我将temp[1]更改为temp[0],它工作了。
var $sections = $('div.section'),
    sCount = $sections.length;

for (var i = 0; i < sCount; ) {  

    var sClass = $sections[i].className.match(/section_\d+/).shift(),
        $section = $('.' + sClass);

    i = $section.wrapAll('<div>').filter(':last').index('div.section') + 1;
}