jquery странное поведение при переключении (скрытии / показе) раскрывающихся панелей - PullRequest
0 голосов
/ 23 августа 2010

У меня есть несколько перетаскиваемых / скрываемых блоков на основе кода, размещенного здесь: http://webdeveloperplus.com/jquery/saving-state-for-collapsible-drag-drop-panels/

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

Пример 1

Скажем, у меня 3 ящика сложены вертикально:

Box1

Box2

Box3

Блок можно перетащить в (и отсортировать) в порядке.Если я затем переместу Box2 выше Box1, порядок будет следующим:

Box2

Box1

Box3

Я не могу ничего перетащить в Box2.Я не получаю никаких ошибок в Firebug.Просто ничего не происходит.

Пример 2

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

Если у меня установлены следующие поля и я скрываю Box3, я не могу ничего перетащить в Box4 и Box5.Если я затем покажу Box3, единственное окно, в которое я не смогу перетащить это Box3:

Box1

Box2

Box3

Box4

Box5

Есть какие-нибудь идеи вне головы?Я использую обычные перетаскиваемые и сортируемые функции (не сбрасываемые, поскольку по какой-то причине использование droppable с sortable приводило к запуску события droppable дважды - странность, отмеченная другим пользователем на этом форуме).Я должен указать, что когда вы запускаете этот код, загружается только один ящик, и вы нажимаете кнопку, чтобы создать новые блоки.Это функция, которая создает новый блок и устанавливает его в качестве перетаскиваемой / сортируемой области.

Приветствия:)

- ОБНОВЛЕНИЕ -------------------------

Я создал упрощенное представление, используя большую часть кода 'webdeveloperplus' (огромное спасибо этой главе).Он доступен здесь: jsfiddle.net/gD94w/4 (кстати, мне очень нравится этот сайт jsfiddle!).Вы должны быть в состоянии повторить мою проблему (перетащите «элементы» в синие области).Любые идеи, которые я хотел бы узнать!Спасибо.

1 Ответ

0 голосов
/ 01 февраля 2011

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

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

$('.sortable-item').sortable('refresh');

ОБНОВЛЕНИЕ:

Я раздвоил Jsfiddle в новый: http://jsfiddle.net/zf26q/

Обратите внимание на дополнения:

$('.draggedcontent').sortable('refresh');

update: function(event, ui){
     $('.draggedcontent').sortable('refresh');   
}

Я не могу воспроизвести проблему.Дайте мне знать, если это решит вашу проблему.

...