0

我有一个如下列表,

<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

4

2 回答 2

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/

于 2013-09-14T19:59:15.013 回答
0

没有任何外部插件,这就是你想要的:

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

在这里演示

于 2013-09-14T20:21:53.673 回答