需要帮助重新启用拖动拖动

时间:2010-10-07 10:17:01

标签: jquery jquery-ui draggable droppable

我有一个可拖动的元素

$(".element").draggable({
helper: "clone",
revert: 'invalid',
containment: '#parent',
appendTo: '#parent'
});

我有两个问题:

  1. 删除此元素后,原始文件会自动停用。

  2. 将关闭的锚标记附加到已删除的元素。单击此“关闭”时,原始元素应再次变为可拖动,并应从可放置的“div”中删除。

  3. 我已经为close锚编写了一个处理程序,如下所示,它从droppable中删除了该元素,但它没有使它成为可拖动的aggain。

    $('.cancel a',ui.helper).click(function()
    {
       $(ui.helper).remove();
       $(ui.draggable).draggable('enable');
    });
    

    请帮忙。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

第一个问题的答案是将draggable元素的disabled选项设置为false。

    $(".element").draggable({
      helper: "clone",
      revert: 'invalid',
      disabled: false,
      containment: '#parent',
      appendTo: '#parent'
    });

在关闭锚点的处理程序上,启用要拖动的可拖动对象。例如,

    $('.cancel a',ui.helper).click(function()
    {
       $(ui.helper).remove();
       $('#element').draggable('enable');
    });

答案 1 :(得分:0)

我假设您在Drop事件(?)中禁用了draggable $(ui.draggable)仍在那里。 但是在click事件中,您无法再访问可拖动对象,而应选择要拖动directley的元素。例如:$("#element").draggable("enable")

答案 2 :(得分:0)

我做了类似的事情,我创建了一个数组来保存被删除的draggable的索引,如下所示:

var $drop = $(selector for my droppable),
    $drag = $(selector for my draggable),
    dragged = [];
$drop.droppable({
    drop: function (e, ui) {
        var dragIndex = $drag.index(ui.draggable);
        dragged[$drop.index($(this))] = dragIndex;
    }
});

然后,要在取消功能中重新启用可拖动功能,您可以执行以下操作:

$('.cancel a').click(function() {
    var clickIndex = $(selector for droppable).index($(this).parent()),
        whichDrag = dragged[clickIndex];
    $drag.eq(whichDrag).draggable("enable");
});

我猜测$(this).parent()返回的元素与droppable选择器中的元素匹配,否则,您将不得不进行不同的遍历。

基本思想是找到被拖动项目的索引,将其存储在dragged数组中等于被删除项目索引的位置。然后在取消时,使用删除了draggable的项的索引来从dragged数组中获取与原始可拖动位置匹配的值,然后启用它。