Javascript JQueryUI可排序,不带占位符置换
我有多个可排序的列(Javascript JQueryUI可排序,不带占位符置换,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,我有多个可排序的列()彼此相邻,其中有许多元素,可以在它们之间拖动。当您拖动一个选项时,它会替换光标下方的其他选项,即使我完全禁用了占位符。我喜欢的行为是: 光标下方没有位移 将项目放入时,应将其追加到列表底部,而不是光标悬停的位置 我尝试过ForcePlaceholder Size属性,也尝试过高度为0的占位符,但两种方法都不起作用(不管是真是假,前者似乎没有效果,后者总是显示一个具有某种最小高度的占位符,即使我在CSS中用!important覆盖它).多亏@JulienGrégoire的评论
)彼此相邻,其中有许多
元素,可以在它们之间拖动。当您拖动一个选项时,它会替换光标下方的其他选项,即使我完全禁用了占位符。我喜欢的行为是:
时,应将其追加到列表底部,而不是光标悬停的位置我尝试过ForcePlaceholder Size属性,也尝试过高度为0的占位符,但两种方法都不起作用(不管是真是假,前者似乎没有效果,后者总是显示一个具有某种最小高度的占位符,即使我在CSS中用
!important
覆盖它).多亏@JulienGrégoire的评论为我指明了正确的方向,我最终在我的可排序代码中添加了以下内容来完成我所需要的:
$( "ul.my_sortable" ).sortable({
...
start: function (event, ui) {
// get placeholder position when selecting item
place_prev = ui.placeholder.prev();
start_col = $(this);
target_col = $(this)
},
change: function (event, ui) {
// keep track of where the placeholder moves...
place_pos = ui.placeholder.index();
// and reset it back to its starting position so it doesn't appear to move
place_prev.after(ui.placeholder);
},
beforeStop: function (event, ui) {
// move the choice to the correct column when you let go
if (!target_col.is(start_col)) {
target_col.append(ui.item);
}
}
});
尽管如此,这似乎还是有点低效,因为需要经常照看占位符。如果其他人能想出更好的方法,我很乐意听到!请参见。您可以应用相同的逻辑,但最后可以将位置设置为最后一项。