如何在页面加载时按字母顺序对HTML列表的内容进行排序?

时间:2014-12-12 15:26:59

标签: javascript jquery html sorting html-lists

我已经看到了一些例子,但没有找到一种方法来对列表进行排序。

在Jennifer Perrin的这个例子中,她展示了如何使用两个链接进行排序(升序排序/降序排序)。

您是否可以在页面加载时进行调整?

标记

<h1>Sort by:
<a href="#" class="link-sort-list asc">Desc</a>
<a href="#" class="link-sort-list desc">Asc</a>
</h1>

<ul id="sort-list">
<li>Orange</li>
<li>Pear</li>
<li>Bananna</li>
<li>Apple</li>
<li>Cucumber</li>
</ul>

jquery的

$(document).ready(function() {
$('.link-sort-list').click(function(e) {
    var $sort = this;
    var $list = $('#sort-list');
    var $listLi = $('li',$list);
    $listLi.sort(function(a, b){
        var keyA = $(a).text();
        var keyB = $(b).text();
        if($($sort).hasClass('asc')){
            return (keyA > keyB) ? 1 : 0;
        } else {
            return (keyA < keyB) ? 1 : 0;
        }
    });
    $.each($listLi, function(index, row){
        $list.append(row);
    });
    e.preventDefault();
});
});

1 个答案:

答案 0 :(得分:0)

只需在没有点击功能的情况下使用

$(document).ready(function() {
    var $sort = $('.asc');
    var $list = $('#sort-list');
    var $listLi = $('li',$list);
    $listLi.sort(function(a, b){
        var keyA = $(a).text();
        var keyB = $(b).text();
        if($($sort).hasClass('asc')){
            return (keyA > keyB) ? 1 : 0;
        } else {
            return (keyA < keyB) ? 1 : 0;
        }
    });
    $.each($listLi, function(index, row){
        $list.append(row);
    });
    e.preventDefault();
});

这里我将$ sort设置为asc。但是您可以从任何变量中提供req值。希望这有效。谢谢