丢弃后销毁可拖动时出错

Kev*_*sox 4 javascript jquery jquery-ui

我在jQuery UI中收到一个错误,当我尝试在删除它后销毁一个draggable.我正在使用jQuery 1.9.1和jQuery UI 1.10.0.

脚本

$(".drag").draggable({
    revert: "invalid",
    helper: "clone"
});

$(".drop").droppable({
    accept: ".drag",
    drop: function(event,ui){
      ui.helper.remove();
      $(this).append(ui.draggable);
      $(ui.draggable).draggable("destroy");
    }
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="drag">Draggable</div>
<div class="drop">Droppable</div>
Run Code Online (Sandbox Code Playgroud)

示例: http ://jsfiddle.net/feDME/

收到错误

TypeError:$(...).data(...)未定义

过去几个小时我一直没有运气.我发现了一个不含分辨率的类似帖子.有人可以帮我从这里出去吗?谢谢!

cla*_*lav 7

看起来jquery-ui可拖动代码中存在竞争条件,它在拖动停止时尝试设置光标.以下行失败,因为"draggable"数据没有附加到可拖动的div但是在调用stop时.

var o = $(this).data('draggable').options;
Run Code Online (Sandbox Code Playgroud)

这有点像黑客,但这个setTimeout会修复它.

$(".drop").droppable({
    accept: ".drag",
    drop: function(event,ui){
      ui.helper.remove();
      $(this).append(ui.draggable);
      setTimeout(function() {
          $(ui.draggable).draggable("destroy");      
      }, 0);      
    }
});
Run Code Online (Sandbox Code Playgroud)