由于某种原因,我的可排序项目的占位符大约是10px。我所有的可排序项目都有不同的高度。如何更改每个占位符的高度以匹配正在移动的项目?
答案 0 :(得分:238)
我通常通过绑定一个回调来解决这个问题,该回调将占位符的高度设置为要排序到start
事件的项目的高度。这是一个简单的解决方案,可以让您对占位符的显示方式进行细粒度控制。
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
}
});
答案 1 :(得分:15)
您是否尝试过设置forcePlaceholderSize:true
属性?阅读jQuery UI Sortable documentation page。
答案 2 :(得分:2)
你的元素是display: block
吗?内联元素可能会使占位符无法正确保持高度。例如。 this jsFiddle似乎与您描述的问题类似。将display: block
添加到.portlet
类会修复它。
答案 3 :(得分:1)
您可以为占位符设置样式,作为可排序的选项。
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight"
});
只要给这种风格一个高度。希望有效。
答案 4 :(得分:1)
在我的情况下,我找到了类似于JP Hellemons的解决方案,其中我强制占位符的高度(使用!important )进行自定义,并设置背景可见性以查看为自己做的改变(你也可以用这种方式设置你想要的占位符)。
这也适用于display: inline-block;
.ui-sortable-placeholder {
background:red !important;
height: 2px !important; // this is the key, set your own height, start with small
visibility: visible !important;
margin: 0 0 -10px 0; // additionaly, you can position your placeholder,
} // in my case it was bottom -10px
答案 5 :(得分:1)
而不是使用" ui.item.height()"你可以使用" ui.helper [0] .scrollHeight"从外部容器拖动项目时的稳定结果。
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.helper[0].scrollHeight);
}
});