javascript - 如何按相邻元素对元素集合进行分组?

标签 javascript jquery jquery-1.5

假设我有一个如下所示的列表:

<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;
}

http://jsfiddle.net/adamjford/5q8fZ/3/

关于javascript - 如何按相邻元素对元素集合进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8918657/

相关文章:

javascript - 无论函数参数如何,它都返回 promise 的包装函数

javascript - 带有搜索框的单个下拉列表

javascript - 需要一个从图像文件夹调用的灯箱画廊,没有缩略图,只需单击一下即可打开?

javascript - 增量日取决于选择下拉 Bootstrap 日期选择器

javascript - 为什么switch语句自动回答 "default"

javascript - FabricJS Canvas 无法选择任何对象

javascript - 播放新音频后,iPad 会清除任何早期缓冲的音频吗?

json - 对于 JSON 请求,jQuery 1.5 AJAX 调用失败并显示 "invalid label"

javascript - 如何并排使用两个不同版本的 jQuery?

jquery - 使用 jsonp 内容类型进行 jQuery.ajax 请求后出现解析器错误