首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤和排序div

过滤和排序div
EN

Stack Overflow用户
提问于 2013-02-10 23:38:15
回答 1查看 570关注 0票数 1

我一直在寻找一种强大而简单的方法来对案例进行排序,但经过几个小时和堆栈溢出的搜索,我找不到一种方法来过滤我想要的案例。

基本上,我将使用css类为每个案例提供三个类别(生产年份、项目类型和名称),例如,标记将如下所示

代码语言:javascript
复制
<div class="name1 home 2013"></div>
<div class="name2 work 2012"></div>
<div class="name3 home 2012"></div>
<div class="name4 charity 2012"></div>
<div class="name5 home 2010"></div>
<div class="name6 work 2007"></div>

然后我想要有按钮,这样你就可以选择你想按哪个类别对案例进行排序。所以就像这样。

代码语言:javascript
复制
<div class="button" id="year">Sort by Year</div>
<div class="button" id="alpha">sort Alphabetically</div>
<div class="button" id="type">sort by type</div>

这就是我被卡住的地方。我可以创建什么javascript函数,以便如果您单击按钮“按年份排序”,它将创建一个如下所示的标记。例如,将同一年的所有案例分类到div中。

代码语言:javascript
复制
<div>
   <div class="name1 home 2013"></div>
</div>

<div>
<div class="name2 work 2012"></div>
<div class="name3 home 2012"></div>
<div class="name4 charity 2012"></div>
</div>

<div>
<div class="name5 home 2010"></div>
</div>

<div>
<div class="name6 work 2007"></div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 00:04:13

我会使用数据属性来简化过滤。

代码语言:javascript
复制
<div class="name1 home" data-year="2013">2013</div>
<div class="name2 work" data-year="2012">2012</div>
<div class="name3 home" data-year="2012">2012</div>
<div class="name4 charity" data-year="2012">2012</div>
<div class="name5 home" data-year="2010">2010</div>
<div class="name6 work" data-year="2007">2007</div>

使用JQuery和array.map (如果你想要更老的浏览器支持,可以用foreach代替)

代码语言:javascript
复制
var studies = $('[data-year]')

studies.map(function(index, el) {
    var $el = $(el)
    year = $el.attr('data-year')
    if($('#' + year).length == 0){
        $(document.body).append(
            $('<div>').attr('id', year)
            .css('margin-bottom', '20px')
        )
    }

    $('#' + year).append(el)
 })

这样做的目的是获取所有具有data-year属性的元素,foreach元素检查具有该元素年份id的div是否存在。如果没有创建,则将其附加到正文中。然后将元素附加到年份容器中。

see this jsfiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14799389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档