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