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

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')... 限制了范围。这似乎更可靠。

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