javascript - 在追加列表项后刷新有序列表的顺序

标签 javascript jquery html dom

jsFiddle example

我正在尝试使用 ol显示多个动态列表项。在 appending一个使用 jQuery 的列表项,我希望浏览器会刷新有序列表,但它似乎并没有。

<ol>
    <li value="1">First</li>
    <li value="2">Second</li>
    <li value="4">Forth</li>
</ol>

附加 <li value="3">Third</li> 后,得到的顺序是:

// First
// Second
// Forth
// Third <-

我是否需要触发重新排序,或者仅在呈现页面/添加列表 DOM 元素时才计算顺序?

注意:我使用的是 Chrome 28.0.1500.95m

最佳答案

首先,请注意value 不是li 的有效属性,因此您的代码无效。您应该为您需要的任何非标准属性使用 data 属性,因为您需要编写排序器函数。试试这个:

$('#addThird').one('click', function() {
   $('ol').append('<li data-value="3">Third</li>');
    sortItems();
});

var sortItems = function() {
    var $items = $('ol li');
    $items.sort(function(a, b) {
        var keyA = $(a).data('value');
        var keyB = $(b).data('value');
        return (keyA > keyB) ? 1 : 0;
    });
    $.each($items, function(index, row){
        $('ol').append(row);
    });
}    

Updated fiddle

这按元素的 data-value 属性排序,但可以根据需要修改。

关于javascript - 在追加列表项后刷新有序列表的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311953/

相关文章:

jquery - 根据下拉选择显示模态弹出窗口

html - 图像未正确插入父 div 的高度

javascript - 在 Javascript 数组中查找元素的有效方法

Javascript 重定向无法正常工作 ASP.NET

jquery - 如何使用 jQuery/AJAX 访问 views.py 中的变量?

facebook - 为Facebook时间轴(如Spotify)创建播放按钮?

jquery - div contenteditable ="true"

javascript - 根据选项选择问题更改元素值

javascript - Jquery 函数不适用于 ios 设备

javascript - 在Dijit中销毁小部件