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

Posted

技术标签:

【中文标题】未捕获的错误:在初始化之前无法调用可拖动的方法;试图调用方法“禁用”【英文标题】:Uncaught Error: cannot call methods on draggable prior to initialization; attempted to call method 'disable' 【发布时间】:2017-10-25 02:31:01 【问题描述】:

https://jsfiddle.net/scottbeeson/r5du4p6k/12/

如果你长按拖动,当你释放你会得到以下错误:

var t;
$(document).on('touchstart mousedown','.menu-item', function (event) 
    var self = this;
    if ($(self).hasClass('draggable')) return;
    t = setTimeout(function () 
        $(self).draggable(
            revert: true,
            helper: 'clone',
            opacity: .75,
            appendTo: 'body'
        ).draggable('enable').addClass('draggable');
        $(self).trigger(event)
    , 800);
);

$(document).on("touchend mouseup", function () 
    clearTimeout(t);
    $('.draggable').draggable( 'disable' ).removeClass('draggable');
);

【问题讨论】:

【参考方案1】:

由于您复制了原始元素,因此当您尝试删除 draggable 时 - 您也对刚刚复制的元素执行此操作(不可拖动),因此您不能 disable 它。

你可以做的是只在第一个元素上禁用它:

$('.draggable').first().draggable( 'disable' ).removeClass('draggable');

检查这个:https://jsfiddle.net/r5du4p6k/13/

【讨论】:

哦,可拖动事件的克隆?说得通。谢谢。 我没有使用.first(),而是使用$('#container .draggable')... 限制了范围。这似乎更可靠。

以上是关于未捕获的错误:在初始化之前无法调用可拖动的方法;试图调用方法“禁用”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:$(...).draggable 不是函数 [重复]

JQuery UI'可拖动不是函数'未捕获的TypeError

JQuery:未捕获的类型错误:无法读取未定义的属性“调用”

fullCalendar - 未捕获的类型错误:无法调用未定义的方法“拆分”

chrome.tabs.create 给出错误 - “未捕获的类型错误:无法调用未定义的方法‘create’”

chrome.runtime.sendMessage 引发“未捕获的类型错误:无法调用未定义的方法‘sendMessage’”