views:

259

answers:

3

Hi,

I have a sortable list like this one: http://jqueryui.com/demos/sortable

Is it possible to get the start and end position of the element in the list, when it has been moved? I'm talking about their position number, in the list.

For example, if I move element 2 to position 5 in the list, I'd like to assign those two numbers to variables.

I'm new to jQuery - any help would be much appreciated.

A: 

I believe what you are looking to do is done with the serialize method. Serialize is get the new order of the list.

Brian Ojeda
+5  A: 

DEMO: http://ask.altervista.org/demo/getting-the-position-of-the-element-in-a-list-when-its-drag-dropped-ui-sortable/

SOLUTION:

$(function() {
    $('ul#sortable').sortable({
        start: function(event, ui) {
            var start_pos = ui.item.index();
            ui.item.data('start_pos', start_pos);
        },
        update: function(event, ui) {
            var start_pos = ui.item.data('start_pos');
            var end_pos = $(ui.item).index();
            alert(start_pos + ' - ' + end_pos);
        }
    });
});
  • NOTE: Updated to make use of jQuery data() method under advice of Alconja
aSeptik
+1 Nice concise answer, but you don't need to wrap the `ui.item`, it's already a jQuery object. So instead of `$(ui.item)` use `ui.item`
fudgey
sounds good! ;-)
aSeptik
Elegant answer! Thank you so much.I guess the ui.item object is what I was looking for, here.
Wurlitzer
A: 

For some reason ui.item.index() did not work for me.

This did...

    update: function (event, ui) 
{
          var index = $('li', $(ui.item).parent()).index(ui.item);
           alert(index);
}
Mark Kitz