Let's say I have an array containing data, it would probably come from Ajax (but no need to do this here).
With that array I generate the content of a UL element, I make that UL sortable, with jQuery-UI
I would like to keep the order of the array synchronized with the UL, after the client sorts it anyway.
Is there an elegant way of doing this?
var locations = [
{name: 'point 0', location: [50.8674162,4.3772933]},
{name: 'point 1', location: [50.8135113,4.3247394]},
{name: 'point 2', location: [50.8771732,4.3544551]},
{name: 'point 3', location: [50.8460485,4.3664706]}
];
function generateUl() {
var content = '';
for(var i in locations) {
content += '<li>'+ locations[i].name +' ('+ locations[i].location.toString() +')</li>';
}
$('#points').html(content);
}
$(document).ready(function() {
generateUl();
$('#points').sortable({
update: function(event, ui) {
//$('#points li').each( function(e) {
//});
// so, I would like to see this display change after every update and have the order match
$('#display').html(JSON.stringify(locations));
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<ul id="points"></ul>
<div id="display"></div>