2012-05-25 5 views
3

У меня есть несколько списков с перетаскиваемыми элементами. Когда пользователь перемещает какой-либо элемент в новое место, вызывается $ .ajax, поэтому сервер может записывать изменение элемента в позиции. Хотя я могу отключить сортировку для всего списка, я действительно хочу отключить сортировку для перемещенного элемента до тех пор, пока $ .ajax не получит сообщение об успешном завершении.jQuery sortable - отключить отдельный элемент

update: function(event, ui) { 
    ui.item.sortable('disable'); 
    $.ajax({options}, success: function() { 
    ui.item.sortable('enable'); 
    }); 
} 

Я провел много исследований до сих пор и могу получить список всего списка, чтобы отключить его. Любые предложения о том, что я делаю неправильно, или это невозможно?

+1

Сортировка списка влияет на все элементы в этом списке, поэтому имеет смысл отключить весь список до тех пор, пока ваши изменения не будут записаны. Другой вариант может состоять в том, чтобы сохранить состояние на стороне клиента и записать изменения один раз (например, с помощью нажатия кнопки). – sesser

+2

Чтобы подробно описать комментарий @ randy, ваш дизайн сводится к объединению запроса AJAX с каждым отдельным элементом вместо всего списка. Даже если это было возможно (и, вероятно, это так), вы не можете гарантировать, что ваши запросы AJAX действительно достигнут сервера в том же порядке, в каком они были отправлены. Запрос на операцию второго перетаскивания может быть получен и обработан перед запросом на первую операцию перетаскивания, которая, вероятно, не будет тем, что вы хотите. –

+0

Да, я понимаю этот момент и, вероятно, поеду с этим в конце, теперь, когда я думаю об этом. В настоящее время, используя ответ, который я нашел ниже, он работает очень хорошо, пока вы не перетащите свой путь в крушение. – Langel

ответ

3

Настройка отмены сортировки позволяет отменить сортировку вызовов с помощью селекторов. Я добавил следующую строку -

cancel:'.updating'

... а потом я добавлять и удалять класс вокруг вызова $ .ajax.

Я не знаю, как вчера пропустил этот день. : D/

Смежные вопросы