javascript - 如何将一组div包裹在一个div中

标签 javascript jquery

我有这个 html 代码:

<div id="elem">
    <div data-foo="aaa">a</div>
    <div data-foo="aaa">a</div>
    <div data-foo="aaa">a</div>
    <div data-foo="bbb">b</div>
    <div data-foo="bbb">b</div>
    <div data-foo="ccc">c</div>
    <div data-foo="ccc">c</div>
    <div data-foo="ccc">c</div>
    <div data-foo="ccc">c</div>
    <div data-foo="ccc">c</div>
</div>

我需要将所有这些不同的 div[data-foo] 分组到一个 div 中,如下所示:

    <div id="elem">
        <div class="wrap">
            <div data-foo="aaa">a</div>
            <div data-foo="aaa">a</div>
            <div data-foo="aaa">a</div>
        </div>
        <div class="wrap">
            <div data-foo="bbb">b</div>
            <div data-foo="bbb">b</div>
        </div>
        <div class="wrap">
            <div data-foo="ccc">c</div>
            <div data-foo="ccc">c</div>
            <div data-foo="ccc">c</div>
            <div data-foo="ccc">c</div>
            <div data-foo="ccc">c</div>
        </div>
    </div>

那些 div[data-foo] 内容是动态生成的。我不知道如何解决这个问题。有人可以帮帮我吗?

最佳答案

如果您不知道可能的值,您可以这样做:

$('#elem [data-foo]').each(function(){
  var $this = $(this),
      $w = $(this).parent().find('.wrap:has([data-foo="'+$this.data('foo')+'"])');
  if (!$w.length) $w = $('<div>').addClass('wrap').appendTo($this.parent());
  $w.append(this);
});

关于javascript - 如何将一组div包裹在一个div中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238399/

相关文章:

javascript - Angular Testing - 找不到 test.ts

javascript - Canvas 游戏增加敌人生成

JavaScript .length 性能

javascript - 使用 getElementById 从外部 JavaScript 到 asp 文字变量

javascript - 内容更新后 jScrollPane 不滚动到底部

javascript - 从被单击元素的父元素中查找子元素

javascript - 为什么 classList.remove 不起作用,而 jQuery .removeClass 却起作用?

javascript - Switch 语句不返回值

javascript - 为什么 jQuery .attr 总是说这是未定义的?

javascript - 使用 D3.JS 绘制图表