jQuery Sort Elements by attribute value
HTML
<ul>
<li data-time="5">One</li>
<li data-time="523">Two</li>
<li data-time="12">Three</li>
<li data-time="3">Four</li>
<li data-time="2">Five</li>
<li data-time="12">Six</li>
<li data-time="1">Seven</li>
<li data-time="678">Eight</li>
</ul>
CSS
li:before {content: attr(data-time) ": "; color: #aaa;}
JavaScript
$.fn.sortElements = function(els, attr) {
return $(this).each(function(i, container) {
var items = $(container).find(els);
items.sort(function(a, b) {
return +$(a).attr(attr) > +$(b).attr(attr);
});
items.appendTo(container);
});
};
// example usage:
$('ul').sortElements('li', 'data-time');