1

我有一个可拖动的元素

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

我有两个问题:

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

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

我已经为关闭锚编写了一个处理程序,如下所示,它从可放置的元素中删除了元素,但它不会使其再次可拖动。

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

请帮忙。提前致谢。

4

3 回答 3

1

第一个问题的答案是将可拖动元素的禁用选项设置为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');
    });
于 2012-07-18T06:31:04.280 回答
0

我假设您在 Drop 事件(?)
$(ui.draggable)中禁用了可拖动对象,但仍在上下文中。但是在单击事件中,您不能再访问可拖动对象,而是应该选择要直接拖动的元素。例如:$("#element").draggable("enable")

于 2011-05-18T11:04:20.297 回答
0

我做了类似的事情,我创建了一个数组来保存拖放的可拖动对象的索引,如下所示:

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()的元素与选择器中可放置的元素匹配,如果不匹配,则必须进行不同的遍历。

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

于 2012-07-17T16:56:17.910 回答