jQuery日期排序不正确,按下按钮时li元素跳转

jQuery日期排序不正确,按下按钮时li元素跳转,jquery,Jquery,我已经设法弄清楚了如何在jQuery中对日期进行排序,但我注意到某些日期排序不正确,当按下其中一个按钮时会有一点跳跃。我如何解决这个问题?我已经把我的密码贴在了。以下是我目前的代码: HTML <div style="padding-top: 20px;"> <input class="btn" type="button" value="Oldest First" id="sortAsc"/> <input class="btn" type="button" val

我已经设法弄清楚了如何在jQuery中对日期进行排序,但我注意到某些日期排序不正确,当按下其中一个按钮时会有一点跳跃。我如何解决这个问题?我已经把我的密码贴在了。以下是我目前的代码:

HTML

<div style="padding-top: 20px;">
<input class="btn" type="button" value="Oldest First" id="sortAsc"/>
<input class="btn" type="button" value="Newest First" id="sortDesc"/>
</div>

<div id="wrapper" style="padding-top: 20px">
        <ul>
        <li class='item'><div class='activity_date'>01/10/2012</div>
        <div class='activity_box'>
        <div class='activity_text' id='act'>Allocated request</div>
        </div></li><li class='item'><div class='activity_date'>03/10/2012</div>
        <div class='activity_box'>
        <div class='activity_text' id='act'>Failed request</div>
        </div></li><li class='item'><div class='activity_date'>08/10/2012</div>

        <!---------------- 
        SEE JS FIDDLE FOR MORE OF THIS
        ----------------->        

        </li>          
        </ul>
</div>
非常感谢你!提前

您正在添加
  • 项,而没有将它们封装在
    中。 无序列表有一个默认的边距,首先显示,但一旦清空包装器div并只添加单个
  • 项,该边距将被丢弃

    我已经更新了你的小提琴,让它先创建
    ,然后将
  • 项添加到小提琴上:

    至于分类: 我想不知怎么的,日期和月份混淆了。在的帮助下,我四处摆弄,让它工作起来(看起来是这样)


    如果没有正确解析日期,应使用:

    此外,还可以参数化排序函数,例如:

    function sort(items, order)
    {
        return items.sort(function(a,b){
            var ret = parseDate($(a).find('.activity_date').text()) > parseDate($(b).find('.activity_date').text());
            return (order == "asc") ? ret : !ret;
        });
    }
    
    其用途如下:

    sort($('li.item'), "desc").each(function(){
        // make some use of the elements sorted in descending order
    });
    

    此外,您的html包含错误,例如,不要在许多元素上使用相同的id。

    谢谢您的回复。它删除了“跳跃”,但排序本身似乎在我第一次按下它后停止工作。不知道为什么它在jQuery上运行良好。可能是因为我正在研究一个动态解决方案吗?这是我目前的代码:。JavaScript和CSS保持不变。您是否尝试在服务器端PHP代码中交换日期的日期和月份?我认为你把它们混在一起了,javascript把日期当作月份,反之亦然
    function sort(items, order)
    {
        return items.sort(function(a,b){
            var ret = parseDate($(a).find('.activity_date').text()) > parseDate($(b).find('.activity_date').text());
            return (order == "asc") ? ret : !ret;
        });
    }
    
    sort($('li.item'), "desc").each(function(){
        // make some use of the elements sorted in descending order
    });