【问题标题】:jquery multiple draggable and sortablejquery 多个可拖动和可排序
【发布时间】:2013-07-28 10:18:51
【问题描述】:

使用 jquery 可拖动和可排序我想创建一个系统,让学生可以用多个答案(红色框)回答一个问题(蓝色框)并对答案进行排序。蓝色盒子的数量是未知的,因此我创建了一个名为“容器”的类。

我已经设置好并放在了 jsfiddle 上:http://jsfiddle.net/smethorst/h3ZNd/2/

HTML

<ul id="answers">
  <li>Item 1 (+)</li>
  <li>Item 2 (+)</li>
  <li>Item 3 (+)</li>
  <li>Item 4 (+)</li>
</ul>

<ul class="container">
</ul>
<ul class="container">
</ul>

JQuery $(函数() {

    $("#answers li").draggable({
      connectToSortable: '.container',
      helper: 'clone',
      revertDuration: 0
    });

    $(".container").sortable({
      revert: true
    });

    $(".container li").draggable({
      connectToSortable: '.container',
      revert: "invalid",
    });
});

我将解决方案放在 jsfiddle: http://jsfiddle.net/smethorst/h3ZNd/2/

因此,问题在于无法将答案拖放到另一个问题框中。所以将一个项目从红框拖到蓝框后,应该可以拖到另一个蓝框(没有克隆)。

下降后我尝试了不同的东西,比如这些东西,但没有奏效:

$(this).append($(ui.draggable));
$(".container").sortable('refresh');

有解决办法吗?提前致谢。

【问题讨论】:

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


    【解决方案1】:

    很简单,您可以使用可排序的选项:connectWith。它接受一个选择器来连接其他可排序对象:

    $(".container").sortable({
        connectWith: '.container',
        revert: true
    });
    

    JSFiddle

    你的下一个问题可能是每个盒子应该只接受一个元素。因此,您需要在删除元素时动态删除可排序中的其他元素,这比我想象的要棘手。

    【讨论】:

    • 谢谢,这是一个很好的解决方案!每个盒子都应该多次接受一个元素,所以这不是任何问题。但是另一个问题是当有一些默认变量时,项目会相互折叠。当一个项目从一个蓝色盒子移动到另一个蓝色盒子时,一个项目会消失。 jsfiddle.net/smethorst/h3ZNd/6
    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2012-06-23
    • 2014-01-08
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多