我有一个带有2个数据属性的li元素,基本上我想先排序数据排列属性,这是元素
<ul>
<li data-arrange="2" data-rdays="100">John</li>
<li data-arrange="1" data-rdays="300">Paul</li>
<li data-arrange="1" data-rdays="500">Bryan</li>
<li data-arrange="3" data-rdays="240">Mark</li>
<li data-arrange="3" data-rdays="500">Victor</li>
<li data-arrange="4" data-rdays="200">Tess</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
所以从给定的元素,它应该像这样返回
数据安排属性值安排
1
1
2
3
3
4
Run Code Online (Sandbox Code Playgroud)
然后我想基于数据排列属性排列从data到rdays属性从最高到最低排序,所以它看起来像这样的东西
1 500
1 300
2 100
3 500
3 240
4 200
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
Bryan
Paul
John
Victor
Mark
Tess
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的:
function sort_li(a, b){
return ($(b).data('arrange')) < ($(a).data('arrange')) ? 1 : -1;
/* Other return staments that I've tried
return ($(a).data('rdays') && $(b).data('arrange')) < ($(b).data('rdays')
&& $(a).data('arrange')) ? 1 : -1;
return new Date($(a).data("date")) - new Date($(b).data("date")); */
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以实现这个目标吗?谢谢.
您可以首先arrange使用arrange数据对rdays数据进行排序,并对数据进行相同的数据排序array#sort.
$(function() {
$("ul li").sort((a,b) => {
return $(a).data('arrange') - $(b).data('arrange') || $(b).data('rdays') - $(a).data('rdays');
}).appendTo('ul');
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li data-arrange="2" data-rdays="100">John</li>
<li data-arrange="1" data-rdays="300">Paul</li>
<li data-arrange="1" data-rdays="500">Bryan</li>
<li data-arrange="3" data-rdays="240">Mark</li>
<li data-arrange="3" data-rdays="500">Victor</li>
<li data-arrange="4" data-rdays="200">Tess</li>
</ul>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |