通过数据属性的数值对元素进行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"}); 

希望这会有所帮助