JQuery UI 可排序仅允许从底部握住时拖动到顶部

标签 jquery jquery-ui jquery-ui-sortable

我使用 JQuery UI 和 Sortable 来拖动 portlet 并在几个不同的连接的“.column”DIV 之间重新排序。

问题是,为了将 portlet 拖到任何列的最顶部位置,您必须按住/单击 portlet 的底部。如果您从 portlet 的顶部单击/拖动,您将无法将 portlet 放置在列的最顶部...至少在移动 portlet 时需要付出相当大的努力。

我尝试使用“cursorAt”属性将光标强制到底部,拖动通常可以起作用,但它没有达到预期的效果。示例:cursorAt:{left:205,bottom:5}

这是这个问题的一个jsfiddle:

http://jsfiddle.net/KxP72/

否则,这里是从 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.portletfloat:left,并将它们设置为 display:block 而不是 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 添加边框并查看它的外观。

关于JQuery UI 可排序仅允许从底部握住时拖动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16371000/

相关文章:

JQuery 按钮 - 删除文本时保持高度

jquery - Trent Richardson 日期时间选择器无法使用扩展函数 .datetimepicker()

css - 具有相同高度的 Jquery UI 选项卡

jquery - jquery 可排序元素旁边的黑点是什么?

javascript - 如何在我的 Angular 代码中使用 angular-sortable-view?

用于从移动应用程序的 mysql 服务器获取数据的 PHP 代码

javascript - 我如何使用带有持续时间和缓动的 slideToggle()?

javascript - 是什么导致 .load() 在这里触发两次?

javascript - 如何使用多个 CSS 属性?

javascript - 拖动时 jQuery mouseleave 未正确触发