Save value to variable


I'm using jQueryUI - Sortable to change the positions of the data in a table. However, I need to save the starting position (the position the line was before dragging) and the end position (where the line was dragged). These variables, I will use as a parameter to call a query ajax .

My table looks like this:

<h1>Classificar tabela utilizando jQuery UI</h1>
<a href=''>MjQuery UI - Sortable</a>

<table id="sort" class="grid">
        <tr><th class="index">Nº</th><th>Ano</th><th>Título</th><th>Tipo Sanguíneo</th></tr>
        <tr><td class="index">1</td><td>1969</td><td>Fulano de Tal</td><td>A+</td></tr>
        <tr><td class="index">2</td><td>1952</td><td>Ciclano da Silva</td><td>B</td></tr>
        <tr><td class="index">3</td><td>1963</td><td>Beltrano Pereira</td><td>A+</td></tr>
        <tr><td class="index">4</td><td>1973</td><td>Joãozinho Mendes</td><td>C</td></tr>
        <tr><td class="index">5</td><td>1965</td><td>José Ciclano</td><td>A</td></tr>

And I'm using the following code to "sort out" values:

var fixHelperModified = function(e, tr) {
    var $originals = tr.children();
    var $helper = tr.clone();
    $helper.children().each(function(index) {
    return $helper;

    updateIndex = function(e, ui) {
        $('td.index', ui.item.parent()).each(function (i) {
            $(this).html(i + 1);
            console.log($(this).html(i + 1).val);

$("#sort tbody").sortable({
    helper: fixHelperModified,
    stop: updateIndex

In my code, I need to create a variable to save the values of the positions (initial and final).

I have a working example in JSFiddle . Just drag and drop the line to better understand what I've tried to explain.

asked by anonymous 25.06.2015 / 20:00

1 answer


See this example on JSFIDDLE

I found here StackOverFlow - Sortable Change event element position

I put a console.log(pos); which shows you the return with beginning and end of each movement.

var comeco,final;
$( "#sortable" ).sortable({
    change: function(event, ui) {		
        var pos = ui.helper.index() > ui.placeholder.index() 
            ? { start: ui.helper.index(), end: ui.placeholder.index() }
            : { start: ui.placeholder.index(), end: ui.helper.index() }
       comeco = pos.start;  
        final = pos.end; 
         ui.item.startPos = ui.item.index();
            .children().removeClass( 'highlight' )
            .not( ui.helper ).slice( pos.start, pos.end ).addClass( 'highlight' );
    stop: function(event, ui) {
        $(this).children().removeClass( 'highlight' );
        console.log("nova: " + ui.item.index());
        console.log("inicial: " + ui.item.startPos);
#sortable { 
    list-style-type: none; 
    margin: 0; 
    padding: 0; 
    width: 60%; 
.ui-state-default { 
    border: 1px solid #d3d3d3;
    background-color: #E4E4E4;
    margin: 0 3px 3px 3px; 
    padding: 0.4em;
    font-size: 1.4em; 
    height: 18px; 
    background-color: #B24926;	
<script src=""></script><scriptsrc="//"></script>
<ul id="sortable">
    <li class="ui-state-default">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
    <li class="ui-state-default">Item 6</li>
    <li class="ui-state-default">Item 7</li>
    <li class="ui-state-default">Item 8</li>
    <li class="ui-state-default">Item 9</li>
25.06.2015 / 20:28