2012-05-03 3 views
0

ОК, то, что я пытаюсь сделать здесь, это настроить пользовательский интерфейс jQuery для сортировки, отображаемых на странице при динамическом добавлении нового столбца в на странице, клонируя его. Если вы клонируете столбец (демонстрационная страница), новый столбец должен иметь возможность получать оба элемента из существующих списков столбцов, а также новые элементы, которые можно перетащить из списка A вверху в одну из сортируемых. Это отлично работает для начальной настройки, но как только вы клонируете и добавляете новый столбец, все ломается; недавно клонированный столбец не распознается как недоступная цель, и я также не могу перетащить новые элементы из списка A в список недавно клонированных столбцов.jQuery UI Sortable не обновляется после клонирования и добавления нового сортируемого списка

Интуитивно сортируемая ('refresh') команда должна быть достаточной для сортировки, чтобы проверить, что что-либо в настройке было изменено, и включить новые элементы для приема и обработки отсортированных элементов. Тем не менее, я пытаюсь сделать это, когда нажимают кнопку, но, похоже, эффект не имеет.

Я также попытался прямо называть весь сортируемый() плагин в селекторе «.columnlist» еще раз, надеясь, что он инициализирует новые согласованные элементы и просто пропустит уже существующие элементы.

О, и, конечно, я использую клон (true, true), чтобы убедиться, что события и данные идут с ним.

Пожалуйста см демонстрационная страница здесь: http://labs.shifthappens.nl/dragsort/ Попробуйте следующее:

  1. Перетащите элемент из списка А в списке столбца А или В. дрэг к Сортируемому Works
  2. элементов Re порядка в колонке list A. Сортируемые работы.
  3. Нажмите кнопку клонирования. Появится клон столбца C.
  4. Попробуйте перетащить любой предмет (будь то из списка A или из другого списка столбцов) в клонированный столбец C и вот: он не отвечает. Это как будто этого не существует.
  5. Смешная вещь: если вы уже поместили элементы в исходный столбец C и затем клонировали ее, элементы, находящиеся в клонированном столбце, могут быть перемещены в другие списки, но один раз вы не можете вернуться в клонированный список , Как будто он отвергает свое собственное потомство.

Как я могу сделать клонированный список (ы) также сортируемыми и действительными dropzones?

+1

Есть ли причина, по которой вам нужно сделать глубокий клон? Я создал пример без глубокого клонирования, который, кажется, работает - http://jsfiddle.net/jaredhoyt/WRZh4/ – jaredhoyt

ответ

0

Как указывал Джаредхойт, речь шла о глубоком клонировании. Очевидно, что jquery ui не нуждается в глубоких клонированных элементах и ​​фактически разрывается, если вы это делаете, и ожидаете, что новые элементы также будут недоступны.

Однако я нашел необходимость сделать еще один $ ('selector'). Sortable() в столбцах для распознанного клонированного списка. Это то, что сделал Джаредхойт и в своей скрипке. Это, хотя для меня интуитивно метод «refresh» был бы самым элегантным решением, нет?

Во всяком случае, закрытый чехол. Я счастлив, что это было так просто, как не клонирование столбца данными и событиями, а только HTML.