在gridster中拖动之前的延迟

时间:2014-05-07 05:03:54

标签: javascript jquery jquery-ui gridster

我在项目中使用了gridster.net,而且我遇到了问题。

我试图让小工具在点击后按住鼠标一秒后才开始拖动。我正在使用下一个代码:

$(".gridster .gs-w").on('mousedown', function(e) {
    gridsterObj.disable();
    dragTimeout = setTimeout(function() {
        gridsterObj.enable();
    }, 500);
}).bind('mouseup mouseleave', function() {
    clearTimeout(dragTimeout);
});

但它没有用。看来我必须调用开始拖动的功能,比如gridsterObj.on_start_drag.call(gridsterObj, e, ui);,但我在哪里可以得到UI对象?它在gridster代码中到处使用,但我无法找到它创建的位置。 看来它是jquery UI对象。我该如何创建呢?

2 个答案:

答案 0 :(得分:1)

您应该能够将UI对象引用为$.uiwindow.jQuery.ui

所以你的代码应该是这样的:

$(".gridster .gs-w").on('mousedown', function(e) {
    gridsterObj.disable();
    dragTimeout = setTimeout(function() {
        gridsterObj.enable();
        gridsterObj.on_start_drag.call(gridsterObj, $.ui);
    }, 500);
}).bind('mouseup mouseleave', function() {
    clearTimeout(dragTimeout);
});

答案 1 :(得分:0)

我已经用下一个代码结束了:

$(".gridster .gs-w").on('mousedown', function(e, data) {
    var self = this;

    if (!data || !data.start) {
        gridsterObj.disable();

        dragTimeout = setTimeout(function() {
            gridsterObj.enable();
            $(self).trigger(e, [{ start: true }]);
        }, 500);
    } else {
        $(self).addClass('dragging');
    }
}).bind('mouseup mouseleave', function() {
    clearTimeout(dragTimeout);
});

有了这个,gridster在开始拖动之前有0.5秒的延迟。