10

我在使用 jQuery-UI 1.8.2 时可以很好地使用可拖动插件,然后我更改为 1.10.1。我发现的主要区别是在启用和禁用插件时,我不再需要使用:

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

但可以简单地使用

$this.draggable('disable');

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

错误:在初始化之前无法调用可拖动的方法;试图调用方法“启用”

为了解决这个问题,我确保我总是$this.draggable('enable');在任何进一步的选择之前打电话,但这并没有什么不同。有什么问题?

4

3 回答 3

18

你的错误的意思是:$this.draggable('enable');之前调用过$this.draggable();

检查你的程序的执行流程:确保你确实$this.draggable();在尝试对它做任何事情之前初始化了插件(例如:被调用)。

于 2013-02-20T08:55:43.653 回答
4

扩展 LeGEC 所说的话……

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

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

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

首先声明 $this 是可拖动的,然后声明它是禁用的

于 2016-12-16T02:39:46.303 回答
2

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

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

抛出“无法在初始化之前调用可拖动的方法”

修改为:

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

发布以防它帮助其他人以这种方式看到它。

于 2013-04-26T08:29:19.557 回答