ui.draggable的jquery ui错误(“destroy”)

我想删除

的拖动属性,当我将它放在容器上时。 但是我得到一个错误"Property 'draggable' of object # is not a function" ,对于我的代码如下。

 $( "#fighter1" ).draggable(); //fighter1 is the id of draggable object $( "#fighter2" ).draggable(); $( "#fighter3" ).draggable(); $( "#fighter4" ).draggable(); $( "#fighter5" ).draggable(); $( "#fighter6" ).draggable(); $( "#dest" ).droppable({ //dest is the id of droppable object drop: function( event, ui ) { ui.draggable("destroy"); //I get error here. } }); 

我使用jquery ui版本1.8.12

我的猜测是’ui’是一个简单的旧javascript对象而不是jQuery对象。
尝试(修改):
$(ui.draggable).draggable("destroy");

调用可拖动小部件方法的语法是:

 $( ".selector" ).draggable( "method" ); 

您应该将方法名称作为string传递给draggable()方法。

在drop事件回调中, ui.draggable只是对与draggable元素(语法的$( ".selector" )部分对应的jQuery对象的引用)。

您应该实际调用draggable()并传递方法名称:

 ui.draggable.draggable("destroy"); ----^------- ------^------ selector method name --------^-------- this guy executes the method 

我使用setTimeout函数解决了这个问题:

 setTimeout(function(a){a.draggable("destroy");},100,ui.draggable);