当我从容器 div 中拖动一个 div 时,我产生了一个不想要的效果,这个 div 被设置为 overflow: roll。
我发现了一个例子,其他人在他们有问题,但我一直无法找到一个解决办法
粘贴箱示例
滚动条只是增加了,我明白为什么拖动到可滚动 div 中的目的地是理想的行为,但我希望能够把它拖出滚动条的控制范围。
附件
元素,选择器默认值: “父”
在拖动过程中,传递给或选择的附录选项的元素将用作可拖动助手的容器。默认情况下,助手被追加到与可拖动的容器相同的容器中。
代码示例 使用指定的阑尾选项初始化一个可拖动的。
$('.selector').draggable({ appendTo: 'body' });
注意文档当然是值得的
Http://docs.jquery.com/ui/draggable#option-scroll
卷轴 输入: Boolean 默认值: true 如果设置为 true,则容器在拖动时自动滚动。
输入: Boolean 默认值: true 如果设置为 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'});