Jquery删除了两次调用droppable方法的回调

时间:2013-10-07 09:54:22

标签: jquery jquery-ui backbone.js

我有以下事件的观点。视图ID是“文件夹块”。      我的元素是View是这样的:

<ul>
  <li></li>
  <li></li>
  <li></li>
 </u>
 <ul>
     <li>
       <ul></ul>
     </li>
  </ul>

以下是骨干事件。

  events{
   "mousedown .all-folders": "dragCustomFolders"
  },
  dragCustomFolders: function(e){
    $('#folders ul li').draggable({
      cursor: 'move',
      drag: this.dragElement,
      revert: "invalid"
    });

    $('#folders li').droppable({
      drop: this.cardDrop,
    });
  }

当我将li从一个ul拖到另一个ul时,只会调用一次。当我将li元素拖到同一个ul元素中的另一个li元素时,将调用两次回调函数。

如何解决此问题。

1 个答案:

答案 0 :(得分:4)

在droppable定义中尝试将greedy选项设置为true:

  

默认情况下,在嵌套的droppables上删除元素时   droppable将收到该元素。但是,通过将此选项设置为   如果是,任何父级droppable都不会收到该元素。下降   事件仍会正常冒泡,但可以检查event.target   看看哪个droppable收到了可拖动的元素。

代码:

$('#folders li').droppable({
    drop: this.cardDrop,
    greedy: true
});