Почему этот код нарушает перетаскивание пользовательского интерфейса jquery (с изотопом)

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

Первый элемент изотопов можно перетащить на любой из элементов div. Однако 2-й и 3-й элементы изотопов не распознают первый выпадающий div, но при перетаскивании на второй выпадающий div будут добавлены в первый выпадающий div.

4-й и 5-й перетаскиваемые элементы (изотопы) не распознают первый или второй выпадающий элемент div, но при перетаскивании над третьим выпадающим элементом добавляются ко второму выпадающему элементу.

Так что каким-то образом droppable запутался в том, куда сбрасываются предметы.

Когда я комментирую следующий код, перетаскивание работает правильно. Любые идеи относительно того, почему этот код повлияет на выпадающие области??

jQuery('div.container').isotope({
 itemSelector: 'div.sub-item', 
 resizesContainer : false,
 layoutMode : 'fitColumns',
 getSortData :{ 
   fitOrder : function ($item){
    var order, 
       index = $item.index();
       if($item.hasClass('sub-item-big') && index % 2) {
            order = index +1.5;
            } else {
            order = index;
            }
        return order;
       }
   },
 sortBy : 'fitOrder'
});

--------------- Обновить ------------------

Еще немного поигравшись с этим, я решил добавить «уничтожить» изотоп при начале перетаскивания.

  jQuery('div.sub-item').draggable({
         helper: function(){
                jQuery('div.container').isotope('destroy');
                return jQuery(this).clone().appendTo('body');
          }
    })

Когда я запускаю его таким образом, элементы помещаются в правильный контейнер.

В документации по изотопу говорится, что это функция «удалить», с этим есть две проблемы.

1) в документации говорится, что он удаляет «указанные элементы элемента из виджета Isotope и DOM», но я не хочу удалять элемент из виджета или из dom, я просто хочу удалить функциональность изотопов

2) Я получаю сообщение об ошибке «невозможно вызвать методы для изотопа до инициализации, попытка вызова метода удаления» — но в этом случае изотоп был инициализирован, но, возможно, не на клонированном объекте?? Это выше моих способностей, хотя я надеюсь научиться.

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


person pedalpete    schedule 09.08.2011    source источник
comment
возможный дубликат столкновения пользовательского интерфейса Isotope и jquery   -  person Paul Sweatte    schedule 06.10.2014