Я не могу узнать, как получить целевой элемент с сортируемым пользовательским интерфейсом jQuery.
$("#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);
}
});
Спасибо,
Дмитрий.