JQuery UI Sortable只允许拖动到顶部从底部夹住
问题描述:
我正在使用JQuery UI和Sortable为了拖动portlets并在几个不同的连接“.column”DIV之间重新排序。JQuery UI Sortable只允许拖动到顶部从底部夹住
问题是,要将Portlet拖动到任何列的最顶端位置,您必须抓住/单击Portlet的底部。如果您从portlet顶部单击/拖动,您将无法将portlet放置在列的最顶端......至少在没有相当大的努力移动portlet的情况下不会这样做。
我已经尝试使用“cursorAt”属性来强制光标到底部,拖动通常工作,但它没有所需的效果。例如:cursorAt:{左:205,底部:5}
这是问题的一个的jsfiddle:
否则,这里是代码,开始使用JavaScript:
$(function() {
$(".column").sortable({
connectWith: ".column"
});
$(".column").disableSelection();
});
这里是CSS
.ui-sortable-placeholder {border: 1px dashed #7E7F81; visibility: visible !important; height: 200px !important;}
.ui-sortable-placeholder * {visibility: hidden;}
#container {width: 100%; display: inline-block; border-top: 1px solid #3B3D41; border- bottom: 1px solid #000; text-align: center;}
#object_body {display: inline-block; margin: 0px auto 0px auto; padding: 200px 30px 200px 0px; position: relative; text-align: left;}
div.column {float: left; display: inline-block; width: 437px;}
div.portlet {display: inline-block; padding: 5px; width: 400px; min-height: 225px; background: #141517; border: 1px solid #111; margin: 25px 0px 0px 25px; color: #FFF; float: left; position: relative; cursor: move; box-shadow: 1px 1px 0px #3D3F42; -moz-border- radius: 5px; border-radius: 5px;}
div.portlet img {width: 400px; margin-left: 0px;}
这里是HTML:
<div id="container">
<div id="object_body">
<div class="column ui-sortable">
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_11151.jpg" style="height: 266px;">
</div>
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_11171.jpg" style="height: 266px;">
</div>
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_11191.jpg" style="height: 266px;">
</div>
</div>
<div class="column ui-sortable">
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_11161.jpg" style="height: 266px;">
</div>
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_19951.jpg" style="height: 501px;">
</div>
<div class="portlet">
<img src="http://druble.blob.core.windows.net/object/object_11201.jpg" style="height: 266px;">
</div>
</div>
</div>
</div>
答
您可以.column
和.portlet
删除float:left
,并让他们都显示:块,而不是inline-block的。为了让它们也对齐,您可以将#object_body
更改为display:block
。
div.column {display: block;float: none;}
div.portlet {display: block;float: none;}
这里我更新的jsfiddle http://jsfiddle.net/paulitto/KxP72/2/
利用具有可排序的容器float:left
和/或display:inline
使得它位于在最高层,和图像排序变为界限内有问题的(因为它们是在它外面)。您可以例如将边框添加到.column
并查看它的外观。
辉煌,它的作品。认为这只是一个显示区块的问题,并删除了不必要的浮动。谢谢! – rblythe 2013-05-04 08:30:05