【问题标题】:Delay before dragging in gridster拖入gridster之前的延迟
【发布时间】:2014-05-07 05:03:54
【问题描述】:

我在项目中使用 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 对象。如何创建它?

【问题讨论】:

    标签: javascript jquery jquery-ui gridster


    【解决方案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);
    });
    

    【讨论】:

    • 不,我需要 jquery ui 事件对象,而不是 jquery ui 全局对象。
    【解决方案2】:

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

    $(".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 秒的延迟。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多