jQuery sortable items
http://stackoverflow.com/questions/4956039/jquery-sortable-change-event-element-position?rq=1 http://so.devilmaycode.it/jquery-sortable-change-event-element-position/
by katalin_2003
HTML
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<div class="demo">
<ul id="sortable" class="ui-sortable">
<li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 1</li>
<li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 2</li>
<li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 3</li>
<li class="ui-state-default" style=""> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 4</li>
<li class="ui-state-default" style=""> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 5</li>
<li class="ui-state-default" style=""> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 6</li>
<li class="ui-state-default"> <span class="ui-icon ui-icon-arrowthick-2-n-s"> </span>Item 7</li>
</ul>
</div>
CSS
body {
text-align: center
}
.demo {
width: 580px;
margin: 0 auto;
text-align: left
}
#sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 60%;
}
#sortable li {
margin: 0 3px 3px 3px;
padding: 0.4em;
padding-left: 1.5em;
font-size: 1.4em;
height: 18px;
}
#sortable li span {
position: absolute;
margin-left: -1.3em;
}
#sortable li.highlights {
background: yellow
}
JavaScript
$(function() {
$('#sortable').sortable({
start : function(event, ui) {
var start_pos = ui.item.index();
ui.item.data('start_pos', start_pos);
},
change : function(event, ui) {
var start_pos = ui.item.data('start_pos');
var index = ui.placeholder.index();
if (start_pos < index) {
$('#sortable li:nth-child(' + index + ')').addClass('highlights');
} else {
$('#sortable li:eq(' + (index + 1) + ')').addClass('highlights');
}
},
update : function(event, ui) {
$('#sortable li').removeClass('highlights');
}
});
});