我有一个可拖动的元素
$(".element").draggable({
helper: "clone",
revert: 'invalid',
containment: '#parent',
appendTo: '#parent'
});
我有两个问题:
删除此元素后,原始文件会自动停用。
将关闭的锚标记附加到已删除的元素。单击此“关闭”时,原始元素应再次变为可拖动,并应从可放置的“div”中删除。
我已经为close锚编写了一个处理程序,如下所示,它从droppable中删除了该元素,但它没有使它成为可拖动的aggain。
$('.cancel a',ui.helper).click(function()
{
$(ui.helper).remove();
$(ui.draggable).draggable('enable');
});
请帮忙。 提前谢谢。
答案 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
数组中获取与原始可拖动位置匹配的值,然后启用它。