我有一个如下所示的列表,
<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-id
和names
?
在我的情况下,所需的输出应该是,
data
aazt
abc
abc
Test
答案 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'});
答案 1 :(得分:0)
没有任何外部插件,这可以做你想要的:
$('ul').append($('ul li').sort(function(a,b){
return parseInt(a.getAttribute('data-id'),10)-parseInt(b.getAttribute('data-id'),10)
}));