在更新到版本1.10.1时,jQuery-UI可拖动错误’无法在init之前调用方法’

我在使用jQuery-UI 1.8.2时正在使用draggable插件,然后我改为1.10.1。 我发现的主要区别是在启用和禁用插件时,我不再需要使用:

$this.draggable('option', 'disabled', true); 

但可以简单地使用

 $this.draggable('disable'); 

但后来我意识到还有另一个问题。 我收到此错误,这会弄乱我的整个程序,我不知道如何解决它:

错误:在初始化之前无法调用draggable上的方法; 试图调用方法’启用’

为了解决这个问题,我确保我总是调用$this.draggable('enable'); 在任何进一步的选择之前,但它没有任何区别。 有什么问题?

您的错误的含义是: $this.draggable('enable');$this.draggable();之前调用$this.draggable();

检查你的程序的执行流程:确保你确实已经初始化了插件(例如:调用$this.draggable(); ),然后再尝试对它执行任何操作。

扩展LeGEC所说的……

$this.draggable();$this.draggable('enable');之前被调用$this.draggable('enable');

对我来说,解决方案是像这样链接事件……

 $this.draggable().draggable('disable'); 

首先声明$ this是可拖动的,然后声明它是不可行的

从jquery 1.6.1升级到1.9.1时,我遇到了类似的问题

 var tr$ = $('', { draggable: 'true' }); 

抛出“无法在初始化之前调用draggable方法”

修改为:

 var tr$ = $(''); if(!('draggable' in document.createElement('span'))) { //handle old browsers } else { tr$.attr('draggable', 'true'); } 

发布,以防其他人以这种方式看待它。