如何基于类似内容对动态生成的内容进行分组

时间:2012-06-04 23:22:01

标签: jquery

我有一个动态生成的页面,其中包含不同数量的项目(div.item)。每个项目都有一个带有“日期”类的内部div。这些项目根据日期值从DB按升序排序。由于从DB获取的页面内容可能有10个具有相同日期的项目,因此接下来的3个将共享一个日期,然后下一个X可能共享另一个日期,依此类推。

根据div.date的内容,我想在div.group中包含所有具有相似日期的项目。我本来希望直接在PHP代码上执行此操作,但我继承了一个没有文档的大型杂乱项目,这个选项只是暂时的。目前的简化结构如下:

<div class="item">
  <div class="date">04-06-2012</div>
  <div class="other-content">Other Content</div>
</div>
<div class="item"> // To be grouped with above
  <div class="date">04-06-2012</div> 
  <div class="other-content">Other Content</div>
</div>
...
<div class="item"> // In it's own group
  <div class="date">08-06-2012</div>
  <div class="other-content">Other Content</div> 
</div>
...

由于

1 个答案:

答案 0 :(得分:3)

这会按日期对所有项目进行分组,并将div.group元素附加到body

var groups={}
$('div.item').each(function() {
    var dt = $(this).find ( '.date' ).text() 
    groups[dt] = groups[dt] || []
    groups[dt].push (this)
});
$.each (groups, function(k, v) {
    var group = $('<div/>').addClass('group')
    $.each (v, function(k, item) {
        $(item).detach().appendTo (group)
    });
    group.appendTo ( 'body' )  //or wherever you need to append it
});