可悬停占位符问题内的可放置项目的可排序列表

时间:2017-07-17 16:32:07

标签: jquery hover jquery-ui-sortable placeholder droppable

我有一个可排序的列表,里面有一个可放置的项目,也需要排序。 当您拖放项目占位符所在的放置项目旁边的项目时,放置项目在占位符上仍处于活动状态。

这里有一个简单的小提琴:JSFiddle

    $("#item-list").sortable();

$(".container").droppable({
    accept: ".item",
    drop: function (e, ui) {
        var dropped = ui.draggable;
        var droppedOn = $(this);
        $(this).append(dropped.clone().removeAttr('style').removeClass("item").addClass("item-container"));
        dropped.remove();
    }
});

是否已有解决方案?

3 个答案:

答案 0 :(得分:0)

如果您不希望item container课程可以排序,请使用cancel

$("#item-list").sortable({
  cancel: ".item.container"
});

答案 1 :(得分:0)

您可以使用解决方案enter image description here

$("#item-list").sortable();

$(".container").droppable({
    accept: ".item",
    beforeStop: function(event, ui) {
        $(this).html();
    },
    drop: function (e, ui) {
        var dropped = ui.draggable;
        var droppedOn = $(this);
        if($(droppedOn)[0].innerHTML.indexOf('<div') < 0)
	        $(droppedOn)[0].innerHTML = '';
  $(this).append(dropped.clone().removeAttr('style').removeClass("item").addClass("item-container"));
        
        dropped.remove();
    }
});
.item {
    width:200px;
    height:30px;
    border:1px dashed red;
    margin:10px 0;
    cursor:move;
}
.container {
    height:150px;
    border:1px dashed black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>

<div id="item-list">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item container">dropbox but still sortable</div>
        <div class="item">3</div>
        <div class="item">4</div>
    </div>

答案 2 :(得分:0)

哇,我回答了我自己的问题!

解决方案是,将其放入您的可排序选项列表中:

refreshPositions: true

这就像一个魅力!

大家好!