Skip to content Skip to sidebar Skip to footer

How To Disable Page Scroll While Dragging Draggable In Jquery?

I have a draggable defined this way: $('#drag_area a').live('mouseup', function() { var object = $(this); var class_array = $(this).attr('class').split(' '); element(o

Solution 1:

I solved that problem with one line of css on dragging element touch-action: none;

Solution 2:

Take a look at this jsfiddle. I've made it based on this SO question: How to disable scrolling temporarily?

Here is an excerpt:

functiondisableScroll() {
    if (window.addEventListener) // older FFwindow.addEventListener('DOMMouseScroll', preventDefault, false);
    window.onwheel = preventDefault; // modern standardwindow.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IEwindow.ontouchmove = preventDefault; // mobiledocument.onkeydown = preventDefaultForScrollKeys;
}

$("#draggable").draggable({
    start: function () {
        disableScroll();
    }
});

Solution 3:

You'll be using all your draggable elements without any container, i.e. why when you Drag-n-Drop your elements the whole page scrolls due to dragging.

Instead of that do as:

<divclass="dragWrapper"><!-- Place all your draggable elements here --></div>

set a max-height and overflow of the dragWrapper class as:

.dragWrapper {
   max-height: 400px;
   overflow: auto;
}

Now when you Drag-n-Drop your elements, instead of your body, scroll will be inside the container only.

Hope that will do the trick for you(which already did ;).

Post a Comment for "How To Disable Page Scroll While Dragging Draggable In Jquery?"