如何将所有顺序排序的元素与由分隔符类分隔的同一类分组?

时间:2018-07-19 14:39:30

标签: javascript jquery html siblings

我有一个包含列表分隔符和项目的列表。我想按字母顺序一一排序列表分隔符下面的项目。在执行此操作之前,我需要将它们分组。问题在于,这些没有在div中被禁止,但是它们处于同一级别。我已经尝试了很多,但是找不到如何将它们分组到一个数组中,以便能够遍历各个组。

我拥有的html结构如下:

<div class="list">
 <div class="list-divider">A list divider</div>
 <div class="element">A</div>
 <div class="element">B</div>
 <div class="list-divider">A list divider</div>
 <div class="element">G</div>
 <div class="element">A</div>
 <div class="element">C</div>
 <div class="element">B</div>
 <div class="list-divider">A list divider</div>
 <div class="element">A</div>
 <div class="element">X</div>
 <div class="element">X</div>
 <div class="element">C</div>
</div>

是否有一种简单的方法可以将它们分组为数组?

1 个答案:

答案 0 :(得分:1)

以下是我能想到的:

var sortable = [];
var newHTML = "";

$(".list > div").each(function(key, value) {
  if (value.className == "list-divider"){
  	sortable.push([]);
  }
  else {
  	sortable[sortable.length-1].push(value);
  }
})
for (i in sortable)
{
  sortable[i].sort(function(a,b) {return (a.innerHTML > b.innerHTML) ? 1 : ((b.innerHTML > a.innerHTML) ? -1 : 0);} );
}
$(".list > .list-divider").each(function(key, value) {
  newHTML += value.outerHTML;
  for (i in sortable[key])
  	newHTML += sortable[key][i].outerHTML;
})
$(".list").html(newHTML)

Here is a link to my code