Я не могу узнать, как получить целевой элемент с jQuery UI sortable.
$("#pages").sortable({
opacity: 0.6,
update: function(event, ui) {
var first = ui.item; // First element to swap
var second = ???? // Second element to swap
swapOnServer(first, second);
}
});
Все параметры, которые я пробовал, указывают на перетаскиваемый элемент, но не тот, с которым он обменивается: ui.item[0]
, event.srcElement
, event.toElement
.
Кроме того, this
указывает на элемент LIST (OL).
Говоря второй, я имею в виду следующее:
Оригинальный заказ:
| 0 | 1 | 2 | 3 |
Мы перетаскиваем элемент 1 и опускаем его в положение 3. Который закончится:
| 0 | 3 | 2 | 1 |
Итак, первый элемент равен 1, а второй - 3 (НЕПРАВИЛЬНО! см. ниже).
ОБНОВЛЕНИЕ: Я понял, что понял, что это неправильно. Новый порядок в этом случае будет.
| 0 | 2 | 3 | 1 |
В результате мой вопрос не имеет смысла. Спасибо всем за помощь. Я буду отмечать голос и отмечать ответ.
Итак, вопрос в том, как получить здесь второй элемент?
ТЕКУЩАЯ ПРОГРАММА (как нет условия для обмена в сортируемом) ниже. Он использует временный массив с заказами.
var prevPagesOrder = [];
$("#pages").sortable({
start: function(event, ui) {
prevPagesOrder = $(this).sortable('toArray');
},
update: function(event, ui) {
var currentOrder = $(this).sortable('toArray');
var first = ui.item[0].id;
var second = currentOrder[prevPagesOrder.indexOf(first)];
swapOnServer(first, second);
}
});
Спасибо,
Дмитрий.