假设我有一个如下所示的列表:
<ul>
<li id="q"></li>
<li id="w"></li>
<li id="e"></li>
<li id="r"></li>
<li id="t"></li>
<li id="y"></li>
<li id="u"></li>
<li id="i"></li>
<li id="o"></li>
</ul>
我需要做这样的事情:
function get_important_elements() {
// completely contrived;
// elements are guaranteed to be contained within same ul
// but nothing else unique in common (class, attrs, etc)
return $('#q, #w, #r, #u, #i, #o');
}
function group_adjacent($elems) {
return $elems; //:(
}
$(function () {
var $filtered_list = get_important_elements();
var groups = group_adjacent($filtered_list);
// groups should be
// (shown by ID here, should contained actual elements contained
// within jQuery objects):
// [$([q, w]), $([r]), $([u, i, o])]
});
我该怎么做?
请注意,列表中使用的 ID 和类是 100% 人为设计的。在我以此为基础的真实代码中,我有一组 li
元素,它们是单个 ul< 中包含的
。这个子集是由它们的内容决定的,这些内容对手头的问题并不重要,而不是由类别决定的。他们在示例中仅共享一个类,以便于理解我的观点。li
的子集
最佳答案
function group_adjacent($elems) {
var rArr = [],
currArr = $([]);
$elems.each(function() {
var $this = $(this);
currArr = currArr.add($this);
if (!$elems.filter($this.next()).length) {
rArr.push(currArr);
currArr = $([]);
}
});
return rArr;
}
关于javascript - 如何按相邻元素对元素集合进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8918657/