未捕获错误:在初始化之前无法调用draggable上的方法;试图调用方法'禁用'

时间:2017-05-24 16:11:20

标签: jquery jquery-ui jquery-mobile

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

如果长按拖动,则在发布时会出现以下错误:

  

未捕获错误:无法在初始化之前调用draggable上的方法;试图调用方法'禁用'

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 个答案:

答案 0 :(得分:2)

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

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

disable

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