Javascript 在JQuery中用相同的类(和多个类)包装div
有很多类似的问题,但没有一个像这样。 我有以下html: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>
<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;
}