初始化之前无法在draggable上调用方法

我正在尝试销毁jQuery UI的可拖动实例,但我收到了“无法调用方法”错误。

我的代码

$('table.paper tr').draggable({ helper: 'clone', create: function(event, ui) { $('body').on('click', '[data-action="edit-ingredients"]', function(event) { event.preventDefault(); $('table.paper').draggable('destroy'); }); }, start: function(event, ui) { c.tr = this; c.helper = ui.helper $(this).hide(); }, drag: function(event, ui) { var collides = $('table.paper').overlaps($(c.helper)); if (collides.hits.length) { $(c.helper).removeClass('delete'); } else { $(c.helper).addClass('delete'); } } }); 

错误
Error: cannot call methods on draggable prior to initialization; attempted to call method 'destroy' http://code.jquery.com/jquery-1.11.0.min.js Line 2

在’逻辑说话’中,这个错误告诉我我的代码流不正确,因为当我试图销毁它时,jQuery UI的draggable没有启动 – 但是,正如你可以看到我在draggable’中创建事件监听器’创造’事件。

你正在使用选择器$('table.paper tr')实例化一个draggable,然后使用不同的选择器$('table.paper')销毁一个draggable,我认为它不是一个可拖动的元素。

有时,知道元素是否可拖动的最佳解决方案之一是检查是否存在名为.ui-draggable的类。