0

是否可以延迟 jQuery UI 拖放插件的初始化,直到进行移动或单击?不确定这是否可能。我有大量使用拖放的单元格,比如 Excel 网格,性能不是很好。

4

2 回答 2

0

您可以使用delaydistance

$( ".selector" ).draggable({ delay: 300 });

$( ".selector" ).draggable({ distance: 10 });

从 API 文档:

鼠标按下后的延迟
时间(以毫秒为单位),直到开始拖动。此选项可用于防止单击元素时出现不必要的拖动。

距离
鼠标按下后鼠标必须在开始拖动之前移动的距离(以像素为单位)。此选项可用于防止单击元素时出现不必要的拖动。


更新:

要保持更标准的功能并仅在需要时初始化可拖动,请尝试使用悬停功能,如下所示:

工作示例

$('div').hover(function () {
    $(this).addClass('selector');
    $(".selector").draggable({
        //options
    });
},

function () {
    $('div').removeClass('selector');
});
于 2013-07-27T17:54:34.133 回答
0

我走了这条路,它似乎奏效了。

$.fn.liveDraggable = function (opts) {
    this.one("mouseover", function () {
        if (!$(this).data("init")) {
            $(this).data("init", true).draggable(opts);
        }
    });
    return this;
};
于 2013-07-27T19:03:09.653 回答