首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >divs按价格进行排序,最高可达4位数,但不使用5位数进行排序。

divs按价格进行排序,最高可达4位数,但不使用5位数进行排序。
EN

Stack Overflow用户
提问于 2015-04-06 21:49:17
回答 2查看 44关注 0票数 1

我有一个搜索结果页面,其中显示的结果。我已经实现了用于排序的https://jsfiddle.net/f8w1hpj2/2/代码。

所有的名字排序都很好。但与价格排序,如果价格是1000,2000,2500,3000 (只有4位数)排序工作。但是如果价格是2000,3000,4000,9000,11000,那么按降序排序是不会发生的。

它显示了9000,4000,3000,2000年,然后是11000。

按价格排序的html:

按名称排序:

代码语言:javascript
复制
    <div id= "row" class="row">
        <div id="items" class="col-md-7">
        <div class="clist">
            <div data-sid="2000" data-name="c">
                <a href="www.example.com?id=1">
                    <div style="margin-bottom: 2px; text-align: left; background-color: green;">
                        <div>
                            Name:
                            <h1>C</h1>
                        </div>
                        <div>Price:2000</div>

                    </div>
                </a>
            </div>
            <div data-sid="3000" data-name="a">
                <a href="www.example.com?id=2">
                    <div style="margin-bottom: 2px; text-align: left; background-color: green;">
                        <div>
                            Name:
                            <h1>A</h1>
                        </div>
                        <div>Price:3000</div>

                    </div>
                </a>
                </div>
            <div data-sid="11000" data-name="b">
                <a href="www.example.com?id=3">
                    <div style="margin-bottom: 2px; text-align: left; background-color: green;">
                        <div>
                            Name:
                            <h1>B</h1>
                        </div>
                        <div>Price:11000</div>

                    </div>
                </a>
            </div>
            </div>
        </div>

    </div>

jquery

代码语言:javascript
复制
$(document).ready(function(){
    $('#price').on('click', function(){
    var s = $(this).data('sort'); console.log(s);
    if(s === 0){
        $(this).data('sort', 1);
        $('.clist > div').sort(function(a,b){
           return a.dataset.sid < b.dataset.sid
        }).appendTo('.clist')            
    }else{
        $(this).data('sort', 0);
        $('.clist > div').sort(function(a,b){
           return a.dataset.sid > b.dataset.sid
        }).appendTo('.clist')
    }
});

    $('#name').on('click', function(){
    var s = $(this).data('sort'); console.log(s);
    if(s === 0){
        $(this).data('sort', 1);
        $('.clist > div').sort(function(a,b){
           return a.dataset.name < b.dataset.name
        }).appendTo('.clist')            
    }else{
        $(this).data('sort', 0);
        $('.clist > div').sort(function(a,b){
           return a.dataset.name > b.dataset.name
        }).appendTo('.clist')
    }
});

});

任何帮助都是非常感谢的。提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-06 21:50:40

你在排序字符串而不是数字。

代码语言:javascript
复制
$('.clist > div').sort(function(a,b){
    return parseInt(a.dataset.sid, 10) > parseInt(b.dataset.sid, 10);
}).appendTo('.clist');

减法也应该有效。

代码语言:javascript
复制
$('.clist > div').sort(function(a,b){
    return a.dataset.sid - b.dataset.sid;
});
票数 0
EN

Stack Overflow用户

发布于 2015-04-06 21:59:48

问题是,您正在将值作为字符串进行比较,将它们转换为数字,例如.

代码语言:javascript
复制
$(document).ready(function(){
    $('#price').on('click', function(){
        var s = $(this).data('sort'); console.log(s);
        if(s === 0){
            $(this).data('sort', 1);
            $('.clist > div').sort(function(a,b){
               return parseInt(a.dataset.sid) < parseInt(b.dataset.sid)
            }).appendTo('.clist')            
        }else{
            $(this).data('sort', 0);
            $('.clist > div').sort(function(a,b){
               return parseInt(a.dataset.sid) > parseInt(b.dataset.sid)
            }).appendTo('.clist')
        }
    });

        $('#name').on('click', function(){
        var s = $(this).data('sort'); console.log(s);
        if(s === 0){
            $(this).data('sort', 1);
            $('.clist > div').sort(function(a,b){
               return a.dataset.name < b.dataset.name
            }).appendTo('.clist')            
        }else{
            $(this).data('sort', 0);
            $('.clist > div').sort(function(a,b){
               return a.dataset.name > b.dataset.name
            }).appendTo('.clist')
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29480252

复制
相关文章

相似问题

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