【问题标题】:jQuery sortable connectWith multiple listsjQuery sortable connectWith 多个列表
【发布时间】:2012-03-14 14:30:10
【问题描述】:

我有两个列表,每个列表中有 8 个列表元素。我想将任一元素拖到任一列表中,并将两个列表的总顺序放在一起。

目前订单被归类为两个单独的可排序列表:

[0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7]

但是我希望它是(显然是按照元素的顺序):

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

参数connectWith 似乎根本不起作用,我无法将元素拖到其他列表中。

$(document).ready(function() {
    $('#list-1, #list-2').sortable({
        connectWith: '.group',
        update: function(event, ui) {
            var orders = new Array();
            $('#console').html('<b>posts[id] = pos:</b><br>');
            $('.group li').each(function(i) {
                var order = $(this).index();               
                var id = $(this).attr('data-post-id');
                orders.push(order);
            });
            console.log(orders)
        }
    });

});

I have created a jsFiddle

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-sortable


    【解决方案1】:

    您的问题在于li 项目上的float:left .. 您也需要将float:left 添加到容器中(即ul)以赋予它们一些高度

    Updated your jsfiddle here

    修复将您的 css 更改为

    ul { list-style: none; float:left;  }
    

    更新

    要获得订单试试这个:

    $('.group li').each(function(i) {           
         var id = $(this).data('post-id');
         orders.push(parseInt(id.substr(id.indexOf('-')+1)));
    });
    console.log(orders)
    

    注意:您应该使用 .data() 在节点上存储/检索数据,而不是 attr() 方法

    Working example here

    【讨论】:

    • 谢谢!有什么建议可以让他们都获得正确的顺序吗?
    • 这也解决了我的问题!只是想知道:我怎么会知道这一点(如果我没有在 SO 上找到这篇文章)?
    • @IvoRenkema 哪个位? CSS 还是 JavaScript?
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2016-05-27
    • 2017-03-18
    • 2011-03-30
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多