如何在jquery中拖动可拖动时禁用页面滚动?

Sas*_*vus 5 html javascript jquery jquery-ui

我有一个这样定义的可拖动对象:

$("#drag_area a").live("mouseup", function() {

    var object = $(this);
    var class_array = $(this).attr("class").split(" ");
    element(object,class_array);
    return false;

}).draggable({
    containment: "#drag_area",
    grid: [44, 44],
    zIndex: 1000
}).each(function(i, item){    
});
Run Code Online (Sandbox Code Playgroud)

当我拖动“drag_area a”类型的项目时,如果我在拖动它的同时滚动页面,该项目将从收容中退出...这不是理想的情况,那么我该如何避免这种情况?我可以在拖动过程中禁用页面滚动吗?

小智 12

我在拖动元素上用一行 css 解决了这个问题 touch-action: none;

  • 惊人的解决方案。奇迹般有效。谢谢! (3认同)

viv*_*yay 2

您将在没有任何容器的情况下使用所有可拖动元素,即为什么当您拖放元素时整个页面会因拖动而滚动。

而不是这样做:

<div class="dragWrapper">
   <!-- Place all your draggable elements here -->
</div>
Run Code Online (Sandbox Code Playgroud)

将类的amax-height和设为:overflowdragWrapper

.dragWrapper {
   max-height: 400px;
   overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)

现在,当您拖放元素而不是body时,滚动将仅在容器内。

希望这对你有用(已经做到了;)。