How can a sort the listitems with the sortList[0] or sortList[1]?
example: http://jsfiddle.net/wmaqb/20/
HTML
<div id="sortable">
<div id="sort_18b0c79408a72">Berlin</div>
<div id="sort_dkj8das9sd98a">Munich</div>
<div id="sort_skd887f987sad">Browntown</div>
<div id="sort_54asdliöldawf">Halle</div>
<div id="sort_f5456sdfefsdf">Hamburg</div>
</div>
<input id="sortList0Bt" type="button" value="sortList0" />
<input id="sortList1Bt" type="button" value="sortList1" />
JS
sortList= new Array();
sortList[0] = {};
sortList[0]['18b0c79408a72'] = 6;
sortList[0]['dkj8das9sd98a'] = 9;
sortList[0]['skd887f987sad'] = 3;
sortList[0]['54asdliöldawf'] = 1;
sortList[0]['f5456sdfefsdf'] = 5;
sortList[1] = {};
sortList[1]['18b0c79408a72'] = 1;
sortList[1]['dkj8das9sd98a'] = 2;
sortList[1]['skd887f987sad'] = 3;
sortList[1]['54asdliöldawf'] = 4;
sortList[1]['f5456sdfefsdf'] = 5;
$("#sortable").sortable();
$('#sortList0Bt').click(function() { sortIt(sortList[0]); });
$('#sortList1Bt').click(function() { sortIt(sortList[1]); });
JS – sort function
function sortIt(sortList)
{
var mylist = $('#sortable');
var listitems = mylist.children('div').get();
listitems.sort(function(a, b)
{
// --------------- >>> HERE <<< --------------
});
$.each(listitems, function(idx, itm) { mylist.append(itm); });
}
Thanks in advance!
Basically you want multiple buttons that sort the same list in a different way, if I understand you correctly?
I would suggest changing the following:
Now you don’t have any click-handling hardcoded, only the buttons themselves.
It does seem rather inefficient to have to manually create your sort-arrays like you do. I’m not sure how much freedom you have when using
.sortable()or with the div ID’s (those ID’s themselves aren’t making it clearer either), but I would suggest doing this via classes or adding an element inside the div which your sort function can use to order them.E.g.:
If button 0 is clicked, the element will be displayed in 1st place. If button 1 is clicked, the element will be displayed in 4th place.
Fully writing this will take some amount of brain power but I think it’s the most efficient and clear way to handle this.
To give you an idea of how you would sort them: