After searching for many solutions, I decided to create a blog on how to sort in jquery [1]. So the steps for sorting jquery are "massive" objects by data attribute ...
- select all objects using jquery selector
- convert to actual array (jquery object not like array)
- sort an array of objects
- convert back to jquery object with array of dom objects
Html
<div class = "item" data-order = "2"> 2 </div>
<div class = "item" data-order = "1"> 1 </div>
<div class = "item" data-order = "4"> 4 </div>
<div class = "item" data-order = "3"> 3 </div>
Plain jquery selector
> $ ('. item')
[<div class = "item" data-order = "2"> 2 </div>,
<div class = "item" data-order = "1"> 1 </div>,
<div class = "item" data-order = "4"> 4 </div>,
<div class = "item" data-order = "3"> 3 </div>
] Allows you to sort in order
function getSorted (selector, attrName) {
return $ ($ (selector) .toArray (). sort (function (a, b) {
var aVal = parseInt (a.getAttribute (attrName)),
bVal = parseInt (b.getAttribute (attrName));
return aVal - bVal;
}));
} > getSorted ('. item', 'data-order')
[<div class = "item" data-order = "1"> 1 </div>,
<div class = "item" data-order = "2"> 2 </div>,
<div class = "item" data-order = "3"> 3 </div>,
<div class = "item" data-order = "4"> 4 </div>
] Hope this helps!
[1] http://blog.troygrosfield.com/2014/04/25/jquery-sorting/
Troy Grosfield Apr 25 '14 at 16:43 2014-04-25 16:43
source share