如何根据data-id对列表进行排序?

时间:2013-09-14 19:58:19

标签: jquery sorting

我有一个如下所示的列表,

<ul> 
    <li data-id="5">Test</li>
    <li data-id="5">abc</li>
    <li data-id="2">data</li>
    <li data-id="4">abc</li>
    <li data-id="3">aazt</li>
</ul>

我正在基于诸如

之类的名称对正义进行排序
$('li').tsort();

如何对所有列表项进行排序以考虑data-idnames

在我的情况下,所需的输出应该是,

data
aazt
abc
abc
Test

jsfiddle

2 个答案:

答案 0 :(得分:0)

您只需要传递另一个选项{attr:'data-id'}

$('li').tsort({attr:'data-id'});

选中此http://jsfiddle.net/s7anC/1/

修改

该插件不支持多属性排序,但您可以将它们组合使用,

<ul>
    <li data-id="5" data-combine="5Test">Test</li>
    <li data-id="5" data-combine="5abc">abc</li>
    <li data-id="2" data-combine="2data">data</li>
    <li data-id="4" data-combine="4abc">abc</li>
    <li data-id="3" data-combine="3aazt">aazt</li>
</ul>

注意:我假设您通过迭代编写列表,以便您可以创建组合数据属性

$('li').tsort({attr:'data-combine'});

在这里查看http://jsfiddle.net/s7anC/2/

答案 1 :(得分:0)

没有任何外部插件,这可以做你想要的:

$('ul').append($('ul li').sort(function(a,b){
   return parseInt(a.getAttribute('data-id'),10)-parseInt(b.getAttribute('data-id'),10)
}));

DEMO HERE