У меня была похожая проблема сегодня, и единственное решение, которое я нашел, состояло в том, чтобы ввести переменную флага, которая устанавливается во время события update и проверяется во время события stop .
В вашем примере вы используете событие receive , которое будет сгенерировано в списке, который получает новый элемент из какого-то другого списка, поэтому он должен быть установлен внутри $(".connectedSortable").sortable()
параметров.
Вот мой способ различения, сортировать ли (в пределах одного списка, обработанного в stop ) или перемещать (между двумя списками, обработанными в receive ):
$(function() {
position_updated = false; //helper flag for sortable below
$(".sortable").sortable({
connectWith: ".sortable",
update: function(event, ui) {
position_updated = !ui.sender; //if no sender, set sortWithin flag to true
},
stop: function(event, ui) {
if (position_updated) {
processSortWithin(ui.item.attr("id"), ui.item.index());
position_updated = false;
}
},
receive: function(event, ui) {
processSortBetween(ui.item.attr("id"), ui.item.index(),ui.sender.attr("id"));
}
}).disableSelection();
});
function processSortWithin(id, position) {
alert("sort within");
}
function processSortBetween(id, position, sender_id) {
alert("sort between");
}
Рабочий пример: http://jsfiddle.net/myLff/2/