2

<div>当我将它放在容器上时,我想删除它的拖动属性。但我得到一个错误"Property 'draggable' of object #<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

4

3 回答 3

0

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

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

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

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

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

ui.draggable.draggable("destroy");
----^-------        ------^------
selector                method name
       --------^--------
   this guy executes the method
于 2014-12-09T18:01:49.513 回答
0

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

于 2012-04-05T08:22:57.677 回答
0

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

setTimeout(function(a){a.draggable("destroy");},100,ui.draggable);
于 2016-07-04T13:49:33.760 回答