javascript - jQuery:对相似项目进行分组

标签 javascript jquery

我尝试使用 jQuery 将相似的项目分组到一个列表中。这就是我想要做的。给定如下列表:

<ul>
    <li class="foo">Item #1</li>
    <li class="foo">Item #2</li>
    <li class="foo">Item #3</li>
    <li class="bar">Item #4</li>
    <li class="bar">Item #5</li>
    <li class="foo">Item #6</li>
    <li class="foo">Item #7</li>
    <li class="bar">Item #8</li>
</ul>

我想以以下结尾:

<ul>
    <li class="foo">Item #1 <a>2 More Like This</a>
        <ul>
            <li class="foo">Item #2</li>
            <li class="foo">Item #3</li>
        </ul>
    </li>
    <li class="bar">Item #4</li>
    <li class="bar">Item #5</li>
    <li class="foo">Item #6 <a>1 More Like This</a>
        <ul>
            <li class="foo">Item #7</li>
        </ul>
    </li>
    <li class="bar">Item #8</li>
</ul>

简而言之,只要有 2 个或更多 class="foo"的项目,就应该将它们组合在一起,直到遇到一个非 class="foo"的项目。然后我可以使用链接来显示或隐藏分组的项目。

最佳答案

这是一种可能:

示例: http://jsbin.com/ipiki3/3/

$('ul > li.foo')
    .filter(function() {
        var $th = $(this);
        return $th.next('li.foo').length && !$th.prev('li.foo').length;
    })
    .each(function() {
        var $th = $(this);
        var len= $th.append('<a href="#"> more like this</a>')
                    .nextUntil(':not(li.foo)').wrapAll('<ul>').length;
        $th.next('ul').appendTo(this);
        $th.children('a').prepend(len);
    });

编辑:修正了 len 的一个错误变量,并添加了一个例子。


解释: .filter() 发生了什么是它正在缩小 li.foo元素一直到组中的第一个(后面至少有一个 li.foo,前面没有)

然后用 .each()它附加了 <a> , 获取下一个元素,直到它到达一个不是 li.foo 的元素, 用 <ul> 包裹那些并返回有多少人使用了 length属性(property)。

然后我们遍历到那个新的<ul>并将其附加到第一个 li.foo在群里。

最后,我们将存储在 length 中的数量添加到前面属性(property)给<a>元素。

关于javascript - jQuery:对相似项目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850403/

相关文章:

javascript - 对嵌套在另一个表中的表进行排序(使用 Tablesorter)

javascript - 仅使用 CSS 和 javascript 将 div 的隐藏部分移动到 View 中

javascript - 将货币过滤器应用于angularjs中的输入字段

javascript - Bootstrap 面板未发生单击事件

javascript - jQuery 无限滚动/延迟加载

javascript - 如何检测容器何时失去焦点

javascript - img 在搜索 Angular js 时显示损坏

javascript - jQuery parseHTML 结果不符合预期

javascript - 基于值的 Bootstrap 表格单元格颜色

javascript - 如何使用 JavaScript 访问此 JSON 字符串中的响应/响应 ID?