jQuery UI可排序:拖动的元素消失

20
我使用了一个具有 <div class="container"> 类的元素,并对其应用了 .sortable()。容器中有一些元素。
当我拖动内部元素,并尝试将其与其他元素排序时,一旦被拖动的元素移出容器,它就会消失
但是,当我将它拖放到占位符中时,它又可以被看到了。 在线案例在这里
有没有人遇到过这个问题?或者有没有人能帮我解决这个问题?
谢谢。
4个回答

14

.container 上的 overflow: hidden; 去掉,它就能正常工作。问题在于拖动过程中你正在移动 .container 的子元素到外部,而你已经告诉浏览器在强制发生溢出时要隐藏任何溢出内容,所以浏览器执行了你告诉它要做的事情。

通用建议:除非你知道 overflow 的作用及其使用方法,否则请不要改变它。


3
这个解决方法对我很有用(我不想改变任何样式)。$("#myDraggableElem").draggable({appendTo: 'body', helper: 'clone', zIndex: 300 });。请注意,拖动一个元素会创建一个新元素,这可能不是您要寻找的元素。 - Adriano

10

关键是将helper设置为'clone',并使用一个临时的swaplist进行拖动。你修改后的代码可以在这里查看。

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

2
appendTo在另一个div上的使用对我很有效。谢谢! - gaynorvader
这对我来说有效,而 appendTo 并没有,并且我的溢出设置为不隐藏。 - user2611793
什么也没发生...不确定为什么,但当我拖动元素时它们会跳来跳去。请看这个gif:http://gph.is/2p3dP4u - nclsvh

3

我在一个垂直列表中拖动的项目消失了,后来发现使用 overflow-y: hidden 而不是 overflow:hidden 对我有用。即只针对 y 轴。


2

问题很可能是由于以下代码引起的:.container{ margin:0 20px; position:absolute;top:0;height:100%;width:280px;overflow:hidden;}

如果您设置overflow:auto,它将显示带有滚动条的包装器div,您可以查看您的portlet。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接