Почему этот код ломает jquery UI drag & drop (с изотопом) - PullRequest
1 голос
/ 10 августа 2011

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

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

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

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

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

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) Я получаю сообщение об ошибке «не могу вызвать методы для изотопа до инициализации, попытался вызвать метод удаления» - но в этом случае изотоп был инициализирован, но, возможно, не на клонированном объекте??Это выше моих способностей, хотя я надеюсь научиться.

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

...