调用两次的可放置方法的Jquery drop回调

Posted

技术标签:

【中文标题】调用两次的可放置方法的Jquery drop回调【英文标题】:Jquery drop callback of droppable method called twice 【发布时间】:2013-10-13 20:13:41 【问题描述】:

我对以下事件有看法。视图 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 元素时,drop 回调函数被调用了两次。

如何解决这个问题。

【问题讨论】:

【参考方案1】:

尝试在可放置定义上将 greedy 选项设置为 true:

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

代码:

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

【讨论】:

以上是关于调用两次的可放置方法的Jquery drop回调的主要内容,如果未能解决你的问题,请参考以下文章

.animate() 的回调被调用两次 jquery

jQuery拖放:克隆的可拖动移动原始

创建多个放置在彼此之上的可放置同级

在页面中包含两次的脚本中调用函数

关于jQuery中动态生成的点击事件触发两次的讨论

jquery绑定click事件出现点击一次执行两次的问题