Можете ли вы объяснить это странное поведение перетаскиванием элементов во вложенные сортируемые элементы? - PullRequest
3 голосов
/ 04 января 2011

У меня есть следующие настройки:

  • Сортируемый список, где один из <li> имеет таблицу со списками в каждой ячейке.
  • Все списки можно сортировать с помощьюдруг с другом.
  • Перетаскиваемые элементы, которые можно добавить в любой из сортируемых элементов

Проблема: при добавлении перетаскиваемого элемента («перетащите 1», «перетащите 2», «перетащите 3») водин из списков в горизонтальных списках (таблица списков) дублирует перетаскиваемый объект при удалении.Иногда он создает обе копии в одном и том же списке или одну в списке элементов и одну в списке столбцов.

Вот демонстрационная версия: http://jsfiddle.net/MQTgA/

Вопрос: Как предотвратитьвторой элемент, создаваемый при отбрасывании перетаскиваемого объекта?

ОБНОВЛЕНИЕ : с изменением имен классов горизонтальных списков на что-то другое ('hlist') и пропуском имени нового класса в connectToSortable'option (' ul.hlist '), он больше не сбрасывает две копии и по-прежнему позволяет отбрасывать элемент в любом списке.Это не кажется правильным.Кроме того, при попытке добавить элемент в горизонтальный список вместо основного списка это также кажется очень обидным (это не принесет пользы пользователю).Мысли?

Обновленная демоверсия: http://jsfiddle.net/MQTgA/3/

Ответы [ 2 ]

0 голосов
/ 17 января 2011

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

Вот демонстрация того, с чем я работаю:

http://jsfiddle.net/MQTgA/5/

0 голосов
/ 05 января 2011

Это происходит потому, что ваш неупорядоченный список верхнего уровня (список с элементами 1 - X) имеет тот же класс, что и неупорядоченный список таблиц.Если вы изменяете верхний уровень, на другое имя класса он должен перестать дважды отбрасывать перетаскиваемый объект.Я надеюсь, что я правильно понимаю вашу проблему, вот мое изменение. Новый код


РЕДАКТИРОВАТЬ: На самом деле это тоже не поможет, потому что тогда вы не сможете попасть в верхние списки.Я думаю, проблема в том, что когда вы перетаскиваете jquery, вы не знаете, в какой ul вы действительно хотите попасть.Вы могли бы попытаться сделать все элементы немного больше, чтобы пользователю не пришлось ловить перетаскиваемый объект в нужном месте.

...