jQuery - 窗口滚动后的可拖动位置问题

Posted

技术标签:

【中文标题】jQuery - 窗口滚动后的可拖动位置问题【英文标题】:jQuery - draggable position issue after window scroll 【发布时间】:2018-05-02 10:58:46 【问题描述】:

我使用由可放置(空时隙)和可拖动(计划项目)组成的计划网格动态加载。我的问题是,当我向下滚动页面后,选择一个可拖动对象不会出现在光标处(或它最初的位置),而是将其位置向上移动我向下滚动的相同数量。 (见图:鼠标光标在 15:00,屏幕显示可拖动对象移动到的位置)

我知道曾经有一个错误导致类似的行为。但是我使用最新版本的 jQuery (2.2.4) 和 jQuery UI (1.12.1)。我也遇到了这个帖子:

jQuery draggable shows helper in wrong place after page scrolled

我已经尝试了所有的技巧来让它正确定位。但无济于事。即使我的控制台显示可拖动的右上/左坐标。在我的屏幕上,它仍然处于错误的位置。

同样很奇怪的是,这种行为在 Mac Chrome v58 中并未出现,而是在 v62 中开始出现。 (可能会更快,因为我没有测试中间的每个版本)。 Mac 上的 Firefox 早期版本也是如此。同样在 Safari 9.1.2 (11601.7.7) 中也可以正常工作。

页面为引导格式。计划内容加载在一个 div 中。

<div id="content"></div>

Droppable 附加到 scheduleWeek id 的:

  <div class="row">
    <div class="col-xs-6 nopadding">
      <div id="scheduleWeek1" class="col-xs-3 nopadding">
       <!-- TIMESLOTS WEEK #1  -->
      </div>
      <div id="scheduleWeek2" class="col-xs-3 nopadding">
        <!-- TIMESLOTS WEEK #2 -->
      </div>
      <div id="scheduleWeek3" class="col-xs-3 nopadding">
       <!-- TIMESLOTS WEEK #3 -->
      </div>
      <div id="scheduleWeek4" class="col-xs-3 nopadding">
        <!-- TIMESLOTS WEEK #4 -->
      </div>
    </div>

Draggables 被附加到 droppables 并仅使用标准 jQuery 激活:

$( ".ui-draggable" ).draggable(
  snap: ".droppable",
  snapMode: "inner",
  opacity: .4,
  cursor:'move'
);

.ui-draggable 
 
  width: 100%; 
  height: 30px;
  padding: 0;
  position:absolute;
  margin: 0;
  z-index:2;
  border: 1px solid;

.droppable  
  width: 100%; 
  height: 30px; 
  padding: 0px; 
  float: left; 
  margin: 0px;
  border-top: 1px dashed;
  border-left: 1px dashed;
  border-top: 1px dashed;
  background:#FFF; 
 );

【问题讨论】:

【参考方案1】:

我决定再试一次,并认为如果将可拖动元素附加到动态内容 div 之外的元素上,那么 jQuery 可能会正确识别窗口滚动。这似乎可行,所以现在在添加可拖动后需要重新定位,但这不是问题。也许它可以帮助某人。

【讨论】:

以上是关于jQuery - 窗口滚动后的可拖动位置问题的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 可拖动在我的可拖动 div 上设置“位置:相对”

jQuery UI,可拖动,可放置,自动滚动

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

如何在具有绝对位置的滚动窗口中居中模式对话框?

Angular CDK - 在嵌套的可滚​​动 div 内滚动和拖动元素的问题

基于JQuery的可拖动列表格插件TadaTables