5

我对 jQuery UI 可排序小部件有疑问。我根本无法将任何物品放在空容器上。当容器有一个项目时,它可以完美地工作。我这样称呼小部件:

$(".apc_row--columns", this.$el).sortable({
    placeholder: 'apc_drop-placeholder-blocked',
    forcePlaceholderSize: true,
    items: '.apc_inner_item',
    connectWith: ".apc_column--content",
    tolerance: "pointer",
    handle: '.move_handle',
    helper: "clone",
    dropOnEmpty: true,
    distance: 0.5,
    stop: function(event, ui){
        that.droppedItem(ui.item, ui.item.index());
    }
});

搜索发现连接的列表/容器需要填充/最小高度,以便 jQuery 可以正确计算位置。

但是连接的 div ".apc_column--content" 有一个最小高度和一个填充。我还测试了在容器上放置一个带有“display:none”的项目,但这没有帮助。

我只是无法让它工作(测试了所有浏览器),非常感谢任何帮助!

谢谢你。

编辑:为这个问题做了一个 jsfiddle:http: //jsfiddle.net/Sf5QW/1/

如果将左侧列表中的所有项目移动到右侧(或其他方式),则无法将任何项目移动到空列表中。

4

4 回答 4

7

工作小提琴

基本上,您在错误的元素上设置了可排序。我将它更改为 .apc_column--content 元素,现在它可以工作了。由于两个列表都有该类,我还必须将 connectWith 属性更改为该类。

干杯。

$(".apc_column--content").sortable({
            placeholder: 'apc_drop-placeholder-blocked',
            forcePlaceholderSize: true,
            items: '.apc_inner_item',
            connectWith: ".apc_column--content",
            tolerance: "pointer",
            dropOnEmpty: true,
            distance: 0.5,
            stop: function(event, ui){
                // that.droppedItem(ui.item, ui.item.index());
            }
});
于 2013-08-10T16:54:09.513 回答
6

你可以给空的 ul 添加一个不可见<li></li>的空来解决这个问题。^_^

于 2013-12-11T03:33:39.417 回答
0

您可以将这些 css 添加到ul元素中

padding: 5px;
background-color: #f3f3f9;

您需要为ul元素添加填充

于 2019-09-25T02:22:54.660 回答
0

在 ul 为空后仔细检查 ul 的宽度 当你的 ul 为空时,没有宽度,因此,你不能将 li 放在它上面。您可以通过应用边框来检查 ul 的宽度。解决方案仅将宽度应用于您的所有 ul,问题将得到排序。例如:.droptrue{width: 100%}(.droptrue 是我的 ul)

于 2019-09-09T07:57:11.267 回答