Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQueryUI可排序,不带占位符置换_Javascript_Jquery_Html_Css_Jquery Ui - Fatal编程技术网

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);
            }
        }
    });
    
    尽管如此,这似乎还是有点低效,因为需要经常照看占位符。如果其他人能想出更好的方法,我很乐意听到!请参见。

    您可以应用相同的逻辑,但最后可以将位置设置为最后一项。