2

我有一些具体情况: 在此处输入图像描述 图片显示它非常好。所以我正在制定以下行动:

  • Sortable Div.sortable()本身有方法。并且可排序的项目排序良好。
  • DroppableDiv.droppable()本身有方法。而且 DragItems 有自己的方法.draggable()

我的问题

我想要做的是处理从容器中放置 DragItem 的可排序项目。 在此处输入图像描述

在此示例中,我将拖放DragItem 2Sortable Item 2. 我需要Sortable Item 2DroppableDiv.droppable({drop : function(event, ui) {}});.

我已经搜索eventui反对,但我还没有找到解决方案。

也很抱歉我没有给 anny fiddle 但我在 jsfiddle/jsBin 中创建工作示例时遇到问题。

任何帮助,将不胜感激。

4

1 回答 1

1

在这种情况下,我编写了自己的函数:

function findPosition(position) {
    var container = $("#DroppableDiv");
    var sortableItems = container.find("li");
    var searchedItem = null;

    for (var i = 0; i < sortableItems.length; i++) {
        var item = sortableItems.eq(i);
        var itemPosition = item.position();
        var itemWidth = item.css('width');
        var itemHeight = item.css('length');

        if (position.left < parseFloat(widgetPosition.left) + (parseFloat(widgetWidth) * 0.75) && position.top < parseFloat(widgetPosition.top) + (parseFloat(widgetHeight) * 0.75)) {
            searchedItem = widget;
            break;
        }
    }

    return searchedItem;
}

从以下位置调用:

    $("#DroppableDiv").droppable({
        accept: 'li',
        drop: function (event, ui) {
            //here is little trick for check is event comes from drag or sort(only in my case)
            if (ui.draggable.context.childElementCount === 0) {
                var newWidgetPosition = findPosition(ui.position);
            }
        }
    });
于 2013-01-25T12:58:04.893 回答