Изменение поведения сортировки для сортировки jquery - PullRequest
6 голосов
/ 08 ноября 2011

У меня есть сортируемый как 2-й пример на этой странице:

http://jqueryui.com/demos/sortable/items.html

Сортируемая смесь мишеней:

  • Те, которые можно подобрать и переставить
  • Отключенные предметы, которые не могут быть подняты (но являются объектами падения)

Проблема в том, как компонент интерпретирует мое намерение по сортировке. Например, если взять первый элемент следующего списка и перетащить его на четвертую позицию, это будет выглядеть так:

A B C X X ==> B C X A X

Здесь X обозначают отключенные предметы.

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

Используя тот же пример, что и раньше (перетащите с 1-го на 4-е):

A B C X X ==> X B C A X

Если цель сброса нормальная (т.е. не отключена), поведение должно быть таким же, как и раньше (перетащите с 1-го на 3-е):

A B C X X ==> B C A X X

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

Ответы [ 2 ]

5 голосов
/ 08 ноября 2011

Это не совсем будет ответом на ваш вопрос, но я думаю, что вам не следует заставлять использовать готовое решение, когда оно не подходит к делу.

Я думаю, что вы должны создать свой собственный контроль, чтобы сохранитьэлементы и использовать перетаскиваемые объекты jquery-ui для реализации поведения.Ваш вариант использования отличается от примера некоторой базовой логикой поведения.

Было бы полезно и в будущем, если вы получите больше требований.

2 голосов
/ 19 ноября 2011

Я собрал jsfiddle с нужной вам функциональностью.

По сути, я связываюсь с функцией изменения sortable и проверяю, отключен ли элемент, который только что передал помощник. Если это так, я перемещаю этот элемент туда, откуда начинал помощник.

Вот jsfiddle http://jsfiddle.net/YjhzR/3/

Надеюсь, это поможет!

Обновление:

http://jsfiddle.net/YjhzR/6/

...