Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > jquery sortable проблема при перемещении элемента


Автор: fish9370 30.10.2012, 21:27
имеется div со свойством  sortable и со стилем overflow-y: scroll
если количество элементов в этом списке значительное, то при попытке переместить элемент из данного списка в список под ним этот список перехватывает событие..


Автор: Aliance 31.10.2012, 10:08
Код - это государственная тайна? Если нет - можно воспользоваться jsfiddle для того, чтобы показать наглядно где ошибка.

Автор: fish9370 31.10.2012, 11:09
там кода немерянно, сделать тестовый пример, попробую.. спасибо, Альянс.. )

Автор: fish9370 31.10.2012, 11:46
вот набросал пример, правда не смог его запустить..
отладка:
    http://jsfiddle.net/kkGBt/
результат:
    http://jsfiddle.net/kkGBt/embedded/result/

если смотреть на результат, то при попытке перетащить файл из папки "Сообщения" в папку "Записи", перемещение не происходит..
при перемещении файла из других папок в папку "Записи", файл падает в папку "Сообщения"

через dragonfly видно, что объект .panel растянут на весь экран, и судя по всему перехватывает событие drop

склоняюсь к тому, что обход объектов в поиске обработчика события в UI ведется не корректно, "снизу", а не "сверху" как должно бы быть..

че делать? )

Автор: fish9370 31.10.2012, 13:54
придумал дебильнийший способ решения данной проблемы (не на 100%)

добавил обработчик события sort
Код

sort: function(event, ui) {
          wrappers = $('.filemanager-0 .panel-wrapper');
                                            
          if (ui.position['top'] - ui.originalPosition['top'] > 100) {
                    wrappers.each(function() {
                               $(this).scrollTo('max');
                    });
          }

          if (ui.position['top'] - ui.originalPosition['top'] < -100) {
                    wrappers.each(function() {
                               $(this).scrollTo(0);
                    });
          }
},


есть у кого-то еще какие-то идеи?

Автор: Aliance 31.10.2012, 14:54
Рукалицо. Проведу краткий экскурс на тему jsfiddle:
1. Указываешь jquery последней версии в блоке Choose Framework и там же выбираешь в первом селекте onDomReady, т.к. твой код весь заключен в эту конструкцию. Соответственно в поле, где ожидается скрипт - её (эту конструкцию то есть) уже писать не нужно.
2. Если нужно подключить доп. библиотеки, вроде jquery ui, идем в Manage Resources и там указываем удаленный url на библиотеку. На саму jquery указывать естественно не нужно.
Так же подключать их еще раз в коде html тоже не нужно.
3. Далее, учимся дружить с отступами. Например, там есть кнопочка TidyUp.

Теперь посмотри, какой у тебя код после этих манипуляций:
http://jsfiddle.net/Aliance/kkGBt/4/

Там синтаксическая ошибка на ошибке из-за неправильных кавычек и скобок. Исправь, сделай как нужно, чтобы можно было запуститься по кнопке Run, тогда можно будет разбираться в коде. Я пока до сих пор не понял, что тебе нужно, но скорее всего речь идет об использовании containment

Автор: fish9370 31.10.2012, 15:11
http://jsfiddle.net/8fRTy/ 
вот пример попроще, но который отражает суть..

Добавлено @ 15:22
http://bugs.jqueryui.com/ticket/7065 если я правильно понял, это тикет об этой трабле..

я вот эту цитату недопонял, это исправляет проблему?

This is my workaround.

Код

_intersectsWithPointer: function(item) {
          if (this._intersectsWith(item.instance.containerCache)) {
             return this._oldIntersectsWithPointer(item);
          }

          return false;
       }


Автор: Aliance 31.10.2012, 17:18
Поставив http://api.jqueryui.com/sortable/#option-scroll равным false - это решит проблему?

Автор: fish9370 31.10.2012, 23:04
нет, к сожалению, проблема более сложная.. это баг, а не фича.. тут можно исправить только глубоким исправлением ui.sortable

Автор: ksnk 31.10.2012, 23:32
fish9370, А что не нравится? Хватаем элемент из верхнего списка, тащим его в нижний, отпускаем, он нормально дропается на нужное место. Что плохого? Что при этом скроллится первый список?

Автор: fish9370 1.11.2012, 09:35
ksnk, что не нравится? так, это, а ничего что в списке хренова тонна элементов и пока все не прокрутятся перекинуть элемент довольно сложно (99% случаев нельзя)..  smile 

Автор: fish9370 12.11.2012, 11:37
в версии ui 1.9.1 этот баг пофиксили.. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)