我有一个带有项目网格的页面。这些项目中的每一个都可以拖到四个 div 之一并添加到该 div。这是使用 jQuery 和 JQuery UI 可拖放/可拖放完成的。
第一个同位素项目可以拖到任何 div 上。但是,第 2 和第 3 个同位素项目不识别第一个可放置的 div,但当拖到第 2 个可放置的 div 上时,将添加到第一个可放置的 div。
第 4 和第 5 个可拖动项目(同位素)无法识别第一个或第二个可放置 div,但当拖动到第 3 个可放置项上时,会添加到第 2 个可放置项。
所以不知何故,droppable 对物品被丢弃的位置感到困惑。
当我注释掉以下代码时,拖放工作正常。关于为什么此代码会影响可放置区域的任何想法?
jQuery('div.container').isotope({ itemSelector: 'div.sub-item', 调整大小容器:假, layoutMode : 'fitColumns', 获取排序数据:{ fitOrder : 函数 ($item){ var 顺序, 索引 = $item.index(); if($item.hasClass('sub-item-big') && index % 2) { 订单=指数+1.5; } 别的 { 订单=索引; } 退货单; } }, sortBy : 'fitOrder' });
- - - - - - - - 更新 - - - - - - - - -
在玩了一些之后,我决定在开始拖动时添加“破坏”同位素。
jQuery('div.sub-item').draggable({ 助手:函数(){ jQuery('div.container').isotope('destroy'); return jQuery(this).clone().appendTo('body'); } })
当我以这种方式运行它时,项目将被放入正确的容器中。
同位素文档说它们是“删除”功能,这有两个问题。
1)文档说它删除了“从同位素小部件和 DOM 中指定的项目元素”,但我不想从小部件或 dom 中删除该项目,我只想删除同位素功能
2) 我收到一个错误“无法在初始化之前调用同位素上的方法,试图调用方法删除” - 但在这种情况下,同位素已初始化,但可能不在被克隆的对象上?这超出了我的能力,虽然我希望学习。
现在我找到了一种纠正这个错误的方法,我可以在拖动时破坏同位素,然后在拖动完成后重新初始化同位素,或者放开物品,但这似乎效率低下。