2013-01-16 108 views
1

我有这个具体情况: enter image description here 图片显示很不错。所以我正在开发以下操作:如何处理丢弃元素上的子元素?

  • Sortable Div的方法.sortable()本身。可分类的项目分类很好。
  • DroppableDiv本身拥有方法.droppable()。 DragItems在他们自己的方法上有.draggable()

我的问题

我想要做的是处理上是从集装箱掉落DragItem排序项。 enter image description here

在这个例子中,我拖&下降DragItem 2Sortable Item 2。我需要在DroppableDiv.droppable({drop : function(event, ui) {}});内处理Sortable Item 2

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

另外对不起,我没有给anny小提琴,但我有在jsfiddle/jsBin中创建工作示例的问题。

任何帮助,将不胜感激。

回答

0

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

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); 
      } 
     } 
    });