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');