Javascript(jQuery)在拖动项目时禁用页面滚动

Posted

技术标签:

【中文标题】Javascript(jQuery)在拖动项目时禁用页面滚动【英文标题】:Javascript (jQuery) disable page scroll when dragging items 【发布时间】:2012-02-28 21:01:30 【问题描述】:

我有一个类似小部件的系统,其中包含可以拖动的小部件(使用 jQuery 可拖动/可排序)。现在的问题是,当用户拖动其中一个小部件并将光标移动到边缘时,父 div 会滚动到光标的方向。

一个简化的布局如下:

<div id="wrapper" style="width:WINDOW_WIDTH;">
  <div id="page_wrapper" style="width:10000px;">
    <div class="widget_page" style="width:WINDOW_WIDTH;">
      <div class="widget draggable"></div>
      <div class="widget draggable"></div>
      <div class="widget draggable"></div>
    </div>        
    <div class="widget_page" style="width:WINDOW_WIDTH;">
      <div class="widget draggable"></div>
      <div class="widget draggable"></div>
      <div class="widget draggable"></div>
    </div>
  </div>
</div>

有什么方法可以禁用 page_wrapper 的滚动?

【问题讨论】:

【参考方案1】:

尝试在page_wrapper的css中添加overflow:hidden;

【讨论】:

这不起作用;当用户将小部件拖动到屏幕边缘时,“”仍然会滚动 你能提供一个jsfiddle吗?这就是这个css应该如何工作w3schools.com/cs-s-ref/… jsfiddle.net/rzNDX 如果将其中一个红色矩形拖到一边,您会看到出现一个滚动条并开始滚动 您需要为您的可拖动项目添加一个容器,例如 jsfiddle.net/SJcxX/5 我不这么认为。我为您简化了更多示例jsfiddle.net/SJcxX/13。请注意可拖动元素的 Jquery 代码(包含,更重要的是滚动):$( "#draggable3" ).draggable( containment: "#containment-wrapper", scroll: false );【参考方案2】:

只需在您为其设置滚动条的父 div 上添加 css 属性“作为静态位置”。

$("selector").css("position","static");

例如

$('.bottomSentences').draggable(
    cursor: 'move',
    helper: 'clone',
        start: function(e, ui)
        
            $(ui.helper).addClass("ui-draggable-helper");
            $("#splitSentencesDiv").css("position","static");

               
); 

这里在前。 splitSentencesDiv 是我为其设置滚动的 Div。默认情况下,它的位置值是由 bootstrap colclass 相对设置的。

【讨论】:

以上是关于Javascript(jQuery)在拖动项目时禁用页面滚动的主要内容,如果未能解决你的问题,请参考以下文章

保存并加载动态创建的可拖动元素的位置(jQuery-UI)

Jquery一次拖动所有项目

jquery可拖动隐藏内容

对于未嵌套的“可拖动”div 标签:JQuery/JavaScript div 标签“包含”方法/算法?

如何使用 jQuery 将可拖动项目居中放置在可放置的图像地图区域上?

jQuery-UI 可拖动和可放置项目变为不可拖动