Я хотел бы рассмотреть что-то вроде следующего:
$('.label').draggable({
snap: '.td-event:not(.td-event-booked)'
}).resizable({
handles: 'e, w',
minWidth: width - 24,
aspectRatio: 0,
resize: function(e, ui) {
var w = ui.size.width;
var p = $(ui.element).parent();
var c = Math.floor(p.outerWidth());
var nw = w + (c - (w % c));
ui.size.width = nw;
}
});
Рабочий пример: https://jsfiddle.net/Twisty/4tjwrxyo/18/
Например, если w
равно 121, и c
равно 98, модуль будет равен 23. Наша новая ширина будет nw = 121 + (98 - 23)
или nw
равна 196 (ширина за 2 дня). Если мы сделаем это снова, для w
= 307, c
= 98 и мода 13, nw
= 392 или 4 дня.
Предостережение заключается в том, что это прекрасно работает при изменении размера с ручкой e
. Мы просто добавляем опцию grid
обратно к w
движениям ручки.
Полный пример: https://jsfiddle.net/Twisty/4tjwrxyo/23/
$('.label').draggable({
snap: '.td-event:not(.td-event-booked)'
}).resizable({
handles: 'e, w',
aspectRatio: 0,
grid: [98, 10],
resize: function(e, ui) {
var w = ui.size.width;
var p = $(ui.element).parent();
var c = Math.floor(p.outerWidth());
var nw = w + (c - (w % c));
ui.size.width = nw;
}
});