#javascript #jquery_ui
Я делаю канбан-доску для работы с заявками. Естественно статусов много и по этому
пришлось прикрутить скролл. Пробую прикрутить smoothDivScroll
Таблица выглядит так
Код js такой:
$(document).ready(function (){
$("div.scroller-right-content").smoothDivScroll({
//прокрутка с помощью колеса мыши
//по всем направлениям (не все мыши имеют такую возможность)
mousewheelScrolling: false,
manualContinuousScrolling: false, //Бесконечный цикл
touchScrolling:true,
/*
"" - пустая строка сделает стрелки для прокрутки невидимыми всегда.
hover - сделает стрелки для прокрутки видимым, только при наведении мыши на скроллер.
onStart - делает стрелки для прокрутки видимыми n секунд
always - стрелки для прокрутки видны все время.
*/
visibleHotSpotBackgrounds:"always",
/*
если предыдущее значение onStart
через столько миллисекунд стрелки исчезнут
*/
hotSpotsVisibleTime: 2000,
// автозапуск при загрузке страницы
// уберите эту строку, если Вам это не нужно
//autoScrollingMode:onStart,
});
$( "" ).sortable({
connectWith: ".suppilo_status_block",
cancel: ".title_status_suppilo, .nav, .dropdown, .dropdown-menu, .divider-d, .border-b",
items: 'li', // Указывает какие элементы в группе могут быть отсортированы.
handle: '.drag-item-suppilo-status', //Указывает элемент, при щелчке на который
начнется перетаскивание.
helper:'original', // Устанавливает вид элемента помощника original или clone
opacity:1, // прозрачность перетаскиваемого элемента
cursor: 'n-resize', // вид курсора при нажатии
revert: 'true', // эффект вставляния перетаскиваемого элемента
placeholder:"ui-state-highlight",
start: function (){
$('.scrollWrapper').css('overflow','visible'); // меняем на visible чтобы не
крутилось, когда берем элемент.
},
beforeStop: function (event, ui){
$('.scrollWrapper').css('overflow','hidden'); // меняем на hidden возобновить
прокрутку
var id_status = ui.item.parent().data('id-status');
var id_order = ui.item.data('id');
console.log(''+ui.item.data('id')+' из '+ui.item.parent().data('id-status')+'');
//... код ajax сохранить
}
}).disableSelection();
});
Описание: Чтобы отключить прокрутку вовремя перетаскивания, пришлось (кустарно) в
момент начала перетаскивания изменять css значение области .scrollWrapper прокрутки
с overflow:hidden на overflow:visible (в коде подписано где это), только после этого
можно перетаскивать в нужную область. Пока скроллер не крутишь все работает нормально,
все меняется когда немного прокрутишь вправо...
Проблема: Когда я например прокрутил слайдер чуть-чуть вбок, начал перетаскивать
элемент, то после отпускания перетаскиваемого элемента происходит перескок на начальную
видимость таблицы. Это проблема. Перескока не должно быть, после перетаскивания скроллер
должен включиться и остаться на месте. Как решить, может можно останавливать скроллер
на время перетаскивания как-то иначе?
Ответы
Ответ 1
Попробуйте останавливать скроллер путем отключения его экш-скролл блоков .disabled { display: none !important } - start: function (){ $('.scrollingHotSpotLeft').addClass('disabled'); $('.scrollingHotSpotRight').addClass('disabled'); } beforeStop: function (event, ui){ $('.scrollingHotSpotLeft').removeClass('disabled'); $('.scrollingHotSpotRight').removeClass('disabled'); }
Комментариев нет:
Отправить комментарий