【问题标题】:JQueryUI sortable : Allow sorting only to second list but not back to firstJQueryUI sortable : 只允许排序到第二个列表但不能返回到第一个
【发布时间】:2013-10-29 13:30:52
【问题描述】:

我有两个列表,我想在其上使用可排序的 Jquery UI。它应该工作的方式是列表一包含一系列项目,其中一些可能被拖到列表 2。但是,不允许在列表 1 中排序或从列表 2 拖回列表 1,最后在列表 2 中排序是允许。

列表是这样的

<ul class="sortable" id = "list1">
    <li> Item 1 </li>
    <li> Item 2 </li>
    <li> Item 3 </li>
    <li> Item 4 </li>
</ul>

<ul class="sortable" id = "list2">
    <li> Item 1 </li>
    <li> Item 2 </li>
    <li> Item 3 </li>
    <li> Item 4 </li>
</ul>

我当前的可排序调用看起来像这样

$('#list1, #list2').sortable({
    helper: "clone",
    placeholder: "selected-option",
    forcePlaceholderSize: true,
    dropOnEmpty: true,
    connectWith: '.sortable',
    tolerance: "pointer",
    revert: true,
    cursor: "move",
    receive: function (event, ui) {
        // existing logic

    },
    update: function (event, ui) {
        // existing logic
    }
});

我知道我将不得不操作停止,接收可排序调用上的函数来实现这一点,但我不知道如何..

【问题讨论】:

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


    【解决方案1】:
    $('#list1, #list2').sortable({
      helper: "clone",
      placeholder: "selected-option",
      forcePlaceholderSize: true,
      dropOnEmpty: true,
      connectWith: '.sortable',
      tolerance: "pointer",
      revert: true,
      cursor: "move",
      beforeStop: function (event, ui) {
        if($(ui.helper).parent().attr('id') === 'list1' && $(ui.placeholder).parent().attr('id') === 'list1')
           return false;
        else if($(ui.helper).parent().attr('id') === 'list2' && $(ui.placeholder).parent().attr('id') === 'list1')
            return false;
      }
    });
    

    http://jsfiddle.net/py7FN/

    【讨论】:

    • 谢谢我的歉意,我休息了几天,是的,你的逻辑满足了我所有的查询,但实际上我不得不将它分成两个可排序的调用,因为我必须独立地对每个列表执行额外的更新操作验证每个项目涉及的所有排列变得越来越麻烦。我确实采用了您使用帮助器和占位符对象ID的逻辑......非常感谢:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多