滚动时,jquery draggable自动滚动消失

时间:2012-01-17 15:21:58

标签: jquery jquery-ui

我有一个jquery可滚动条,但不限于它的父元素。当我拖动它时,它会强制身体自动滚动超出它的宽度,它“看起来”就像是在运作。

然而,当我在此点之后点击我的元素时,它会得到一个“奇怪”的位置并且似乎消失(这与位置设置为负值有关。)

我注意到,即使是jquery的例子,它仍然存在一个非常高(和窄)的div来帮助解决这个问题。但是,他们的例子似乎也是横向工作的。

以下是我所指的内容的链接:http://hortitude.com/samples/drag_and_drop/drag_drop.html

相关源代码:

<html>
<head>
    <script type="text/javascript">
       $(function () {
          $(".blueguy").draggable();
          $(".greenguy").draggable({ scroll: false, containment: 'parent' });
       });
    </script>

    <style type="text/css">
      .blueguy {
         background-color: #0000ff;
      }
      .greenguy {
         background-color: #00ff00;
      }
    </style>

</head>
<body style="height:100%;">
<div  style="height:100%;">
<div class="blueguy" style="width:300px; height:150px;">Drag me "off screen" such that the browser window auto scrolls.  Then click on me and I dissapear</div>
<div class="greenguy" style="width:300px; height:150px;">I am constrained to the be contained within my parent</div>


</div>
</body>
</html>

真正的问题是:为什么会发生这种情况?我知道我可以通过额外的div来解决这个问题,但我很好奇为什么会看到这个?

此外,知道是否还有其他好的解决办法会很有趣。

3 个答案:

答案 0 :(得分:2)

我可以重现这种行为。但它不会发生在点击上,如果您将元素拖离屏幕并在此之后尝试将其拖回,则会发生这种情况。 如果你首先滚动到最后,效果会更强,所以如果你将元素从屏幕向右拖动,首先将滚动条放到右边,然后尝试将项目拖回到左边。

但你的实际问题是什么?

它对我来说看起来有点儿麻烦。在jquery ui draggable中,在屏幕外滚动似乎有点混乱。

有趣的是..我试图重现那种行为,我把容器中的两个div包裹起来,“向后滚动”非常快,但项目从不跳过鼠标,所以没有“消失”,见这里http://jsfiddle.net/hFAru/17/。 那会对你有什么帮助吗?

答案 1 :(得分:1)

这是该错误的一张票:

http://bugs.jqueryui.com/ticket/5718

坏消息是这张票已经存在两年了,没有开发商的反馈。

我找到了一种解决方法来避免此错误,并且正在向可拖动元素添加position:absolute

您可以在此处找到一个示例:http://jsfiddle.net/hMdZj/

答案 2 :(得分:1)

尝试使用此

$(".selector").draggable({ helper: "clone" });