通过数据属性的数值对元素进行sorting
我有多个元素的属性: data-percentage
,是否有一种方法sorting元素升序的最低价值第一?
HTML:
<div class="testWrapper"> <div class="test" data-percentage="30"> <div class="test" data-percentage="62"> <div class="test" data-percentage="11"> <div class="test" data-percentage="43"> </div>
希望的结果:HTML:
<div class="testWrapper"> <div class="test" data-percentage="11"> <div class="test" data-percentage="30"> <div class="test" data-percentage="43"> <div class="test" data-percentage="62"> </div>
使用Javascript或jQuery?
使用Array.sort
:
var $wrapper = $('.testWrapper'); $wrapper.find('.test').sort(function(a, b) { return +a.dataset.percentage - +b.dataset.percentage; }) .appendTo($wrapper);
这是小提琴: http : //jsfiddle.net/UdvDD/
如果您使用IE <10,则无法使用dataset
属性。 使用getAttribute
来代替:
var $wrapper = $('.testWrapper'); $wrapper.find('.test').sort(function(a, b) { return +a.getAttribute('data-percentage') - +b.getAttribute('data-percentage'); }) .appendTo($wrapper);
这是小提琴: http : //jsfiddle.net/UdvDD/1/
$('.testWrapper').find('.test').sort(function (a, b) { return $(a).attr('data-percentage') - $(b).attr('data-percentage'); }) .appendTo('.testWrapper');
我认为Tinysort的jquery插件应该是一个选项,你可以得到它我在这里: http ://tinysort.sjeiti.com/
我没有尝试过,但代码应该是这样的:
$("#test > div").tsort("",{attr:"data-percentage"});
希望这会有所帮助