首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一组div与另一个div封装在jQuery中

将一组div与另一个div封装在jQuery中
EN

Stack Overflow用户
提问于 2010-06-10 18:09:21
回答 2查看 3.4K关注 0票数 8

我有点困惑于如何做到这一点。

我正在使用jQuery,并希望用一个div封装某些div集。

例如,我有:

代码语言:javascript
复制
<div id="groups">  
    <div class="group-1">x</div>
    <div class="group-1">x</div>
    <div class="group-2">x</div>
    <div class="group-2">x</div>
    <div class="group-3">x</div>
</div>

并希望以以下方式结束:

代码语言:javascript
复制
<div id="groups">  
  <div id="set-1">
    <div class="group-1">x</div>
    <div class="group-1">x</div>
  </div>
  <div id="set-2">
    <div class="group-2">x</div>
    <div class="group-2">x</div>
  </div>
  <div id="set-3">
    <div class="group-3">x</div>
  </div>
</div>

我可以遍历每个div,并在每个div周围添加一个div,但不是我想要的方式。任何建议都值得感谢。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-10 18:13:52

请参阅.wrapAll()

代码语言:javascript
复制
$(".group-1").wrapAll('<div id="set-1" />');
$(".group-2").wrapAll('<div id="set-2" />');
$(".group-3").wrapAll('<div id="set-3" />');

如果只需要选择器来匹配#groups div中的类,请使用子选择器,例如$('#groups > .group-1')

票数 9
EN

Stack Overflow用户

发布于 2010-06-10 18:30:22

如果你需要一个更通用的解决方案,例如你不知道组的数量(在我的经验中更常见的情况),你可以这样做:

代码语言:javascript
复制
var groups = {};
$("#groups div").each(function(i) {
    var c = $(this).attr("class");
    if(!groups[c]) groups[c] = [];
    groups[c].push(this);
});
for(var i in groups) {
    $(groups[i]).wrapAll("<div id='" + i.replace('group', 'set') +"' />");
}

You can view a demo here,这将适用于#groups中的任意数量的group-X,从而使其更加灵活。如果您能够更改您的标记,您可以使其更简单,但我猜如果这是一个选项,您就不会在第一时间问这个问题:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3013418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档