2010-08-23 3 views
0

Я несколько перетаскиваемости/Hideable коробки на основе кода, размещенные здесь: http://webdeveloperplus.com/jquery/saving-state-for-collapsible-drag-drop-panels/JQuery странное поведение при переключении (скрытие/показ) Droppable панели

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

Пример 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

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

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

--update -------------------------

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

+1

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

+0

Габриэль прав, сделайте пример http://jsfiddle.net/ или что-то подобное. –

+0

Хорошо, ты прав. Будет работать на примере и загружать его здесь. Не могу загрузить весь мой код, потому что он является частью большого приложения. Если я нахожу, что когда я отделяю это от остальной части кода, он работает, тогда отладка может немного упроститься! – WastedSpace

ответ

0

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

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

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

UPDATE:

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

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

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

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

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

+0

Спасибо за это. Это все еще выдающаяся проблема, поэтому любая помощь была оценена :) Я пробовал это, но, похоже, не имеет никакого значения. Если вы хотите отредактировать мой jsfiddle, не стесняйтесь - просто напишите мне новый URL. Что вы имеете в виду, когда говорите о своей позиции? Фактические пиксельные координаты? Или панели относительно друг друга в DOM (верхняя позиция 0, вторая - позиция 1 и т. Д.)? Если это последний, как вы узнаете, что это такое? оповещения ($ (это) .index()); например? – WastedSpace

+0

Вы гений! Некоторые простые строки кода, и это работает. Спасибо друг :) – WastedSpace

Смежные вопросы