首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在对div排序后保持编号

在对div排序后保持编号
EN

Stack Overflow用户
提问于 2013-10-25 18:03:09
回答 1查看 72关注 0票数 0

我有一个div列表,它被分成两组。每个div的编号为1,2,0,1,2,0...等,使用容器“class=-x”。

排序后,div已经改变了位置,但我希望它们仍然保持这个编号。

如何在排序后更新它们的类名?

Markyp:

代码语言:javascript
复制
<div class="container container-1">
    <div class="terminal" data-price="195">
        <h3>195</h3>
    </div>
    I should come in 2nd in group 1 which is displayed first.
</div>

<div class="container container-2">
    <div class="terminal" data-price="220">
        <h3>220</h3>
    </div>
    I should come in 3rd in group 1 which is displayed first.
</div>

<div class="container container-0">
    <div class="terminal" data-price="740">
        <h3>740</h3>
    </div>
    I should come in 2nd in group 2 which is displayed last.
    <div class="anotherGroup">Group 2</div>
</div>

<div class="container container-1">
    <div class="terminal" data-price="140">
        <h3>140</h3>
    </div>
    I should come in 1st in group 2 which is displayed last.
    <div class="anotherGroup">Group 2</div>
</div>

<div class="container container-2">
    <div class="terminal" data-price="130">
        <h3>130</h3>
    </div>
    I should come in 1st in group 1 which is displayed first.
</div>

脚本:

代码语言:javascript
复制
var _count = 0;

$('.terminal').sort(function (a, b) {
    return $(a).data('price') - $(b).data('price');
}).map(function () {
    return $(this).closest('.container');
}).each(paint);

function paint(_, container) {
    if ($(container).children('.anotherGroup')[0]) {
        $(container).parent().append(container);
    } 
    else {
        var next = paint.next;
        if (next) {
            $(container).insertAfter(next);
        } 
        else {
            $(container).parent().prepend(container);
        }
            paint.next = container;
        }
    };

我已经创建了一个fiddle here

EN

回答 1

Stack Overflow用户

发布于 2013-10-25 18:13:33

您可以执行以下操作来更新类编号:

代码语言:javascript
复制
$('.container').each(function (i, v) {
    $(this).attr('class', 'container container-' + i);
});

但我也同意Rory McCrossan的评论,使用增量id或class属性不是一个好的做法。

例如,如果您只是出于选择目的而使用增量类名称,那么jQuery的:eq() Selector可能会派上用场:

代码语言:javascript
复制
// this will select the second 'container' div
var $div = $('.container:eq(1)');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19586819

复制
相关文章

相似问题

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