【问题标题】:jquery sortable - fields automatically populate when certain fields selectedjquery sortable - 选择某些字段时自动填充字段
【发布时间】:2015-04-02 17:08:16
【问题描述】:

我有一个基本的可排序列表

<ul id="sortable1" class="connectedSortable">        
    <li class="ui-state-default" id="1">1</li>
    <li class="ui-state-default" id="2">2</li>
    <li class="ui-state-default" id="3>3</li>
    <li class="ui-state-default" id="a">a</li>
    <li class="ui-state-default" id="b">b</li>
    <li class="ui-state-default" id="c">c</li>
</ul>

    <div id="sortedFields">
        <ul id="sortable2" class="connectedSortable"></ul>
    </div>

效果很好。我想做但不知道怎么做,就是让一些领域依赖于其他领域。因此,如果我将字段“1”拖到“sortable2”上,那么字段“a”会自动放置在“sortable2”中。如果我将“2”拖到上方,“b”会自动放置在“sortable2”中。

对此很陌生,所以不确定这是否可能,或者这是否超级简单。一直在查看sortable site,但没有弹出任何消息。

【问题讨论】:

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


    【解决方案1】:

    免责声明:我只是这个答案的送货人,并没有解决它。

    我想解决它,但后来我发现有人不仅解决了它,而且还包括了一点镀金(你也可以拖放/排序到新的&lt;ul&gt;'s)。

    这是从这个 S.O. 中找到的代码。线程:Make draggable element sortable within droppable using jQuery UI

    HTML:

    <ul id="pool" class="connectedSortable">
        <li>foo1</li>
        <li>foo2</li>
        <li>foo3</li>
    </ul>
    
    <hr>
    
    <ul class="connectedSortable new"></ul>
    
    <ul class="connectedSortable new hidden"></ul>
    

    JS:

    $(function() {
        initSort($('.connectedSortable'));
    });
    
    function initSort(element) {
        element.sortable({
            connectWith: '.connectedSortable',
            beforeStop: function(event, ui) {
                var parent = ui.helper.parent();
                if(parent.hasClass('new')) {
                    parent.removeClass('new');
                    var clone = $('.connectedSortable.new.hidden').clone();
                    clone.insertAfter(parent).removeClass('hidden');
                    initSort($('.connectedSortable'));
                }
                cleanUp();
            }
        }).disableSelection();
    }
    
    function cleanUp() {
        $('.connectedSortable').not('.new, #pool').each(function() {
            if($(this).find('li').length == 0) {
                $(this).remove();
            }
        });
    }
    

    CSS:

    ul { list-style: none; }
    li { cursor: pointer; }
    
    .connectedSortable {
        border: 1px solid;
        padding: 10px;
    }
    
    .connectedSortable.new { border: 1px dashed; }
    
    .hidden { display: none; }
    

    JSFIDDLE

    【讨论】:

    • 嗨,不知道我是否遗漏了什么,但我不明白这是怎么做到的?就像,对于您链接的那个小提琴,没​​有一个领域依赖于另一个领域。我需要做的是,如果我单击并向下拖动“foo1”,那么“foo3”将自动放置在“foo1”所在的位置。
    • 好吧,我开始搞砸你链接的 JSFiddle,我想出了一些似乎可行的方法:jsfiddle.net/rngv2fow/3。不确定这是否是最好的方法,但它似乎可以满足我的要求。感谢您的链接
    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2011-03-18
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多