Я использую 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? Он использовался везде в коде сетки, но я не могу найти, где он создан. Кажется, что пользовательский объект jquery UI. Как я могу его создать?
Я закончил следующий код:
$(".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);
});
При этом сетчатка задерживается на 0,5 секунды до начала перетаскивания.
Вы должны иметь возможность ссылаться на объект пользовательского интерфейса как $.ui
или window.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);
});