可拖动和溢出问题

当我从容器 div 中拖动一个 div 时,我产生了一个不想要的效果,这个 div 被设置为 overflow: roll。

我发现了一个例子,其他人在他们有问题,但我一直无法找到一个解决办法

粘贴箱示例

滚动条只是增加了,我明白为什么拖动到可滚动 div 中的目的地是理想的行为,但我希望能够把它拖出滚动条的控制范围。

80803 次浏览

附件

元素,选择器默认值: “父”

在拖动过程中,传递给或选择的附录选项的元素将用作可拖动助手的容器。默认情况下,助手被追加到与可拖动的容器相同的容器中。

代码示例 使用指定的阑尾选项初始化一个可拖动的。

$('.selector').draggable({ appendTo: 'body' });

注意文档当然是值得的

Http://docs.jquery.com/ui/draggable#option-scroll

卷轴

输入: Boolean
默认值: true
如果设置为 true,则容器在拖动时自动滚动。

所有进入这里的人,从我的错误中吸取教训,RT (F) M! ! !

设置滚动选项不会阻止子级隐藏在溢出区域中。我想出了一个使用 helper 选项的 work-a-round。看看这个:

Http://pastebin.me/164f0a4073496563fe3179ddcec5fd6d

这里还提到了我的另一篇文章:

Jquery ui 可拖动元素不在滚动 div 之外

我在两个溢出自动 div 之间启用拖动时遇到了类似的问题。在前面答案的帮助下,我发现这个组合适合我(Safari 5.0.3,jquery-1.4.4,jquery-ui-1.8.7) :

appendTo: 'body',
containment: 'window',
scroll: false,
helper: 'clone'

克隆解决方案可行,但有两个问题。

第一: 克隆体附着在身体上。根据您的 css,您的元素可以更改样式,因为在它开始之前,它在另一个元素的内部,在拖动过程中,它将直接在 body 元素上。

第二: 有时元素必须移动,克隆让对象在那里。

因此,解决这个问题的方法是:

$('.selector').draggable({
helper: 'clone',
start: function(){
$(this).hide();
},
stop: function(){
$(this).show()
}
});

还可以指定不希望包含的元素类型。

<div class="draggable">
<h2>This will drag the div</h2>
<ul>
<li>This won't drag the div</li>
</ul>
</div>

应用此取消属性可忽略指定子元素中的事件

$('.draggable').draggable({cancel : 'ul'});