使用 .droppable 拖放到 div 中时,jQuery UI 删除元素

Posted

技术标签:

【中文标题】使用 .droppable 拖放到 div 中时,jQuery UI 删除元素【英文标题】:jQuery UI remove element when dropped into a div using .droppable 【发布时间】:2012-04-05 12:26:11 【问题描述】:

我正在试图弄清楚如何做到这一点的逻辑。

我有很多只有 CSS 类名的图片,它们是动态创建的。

这些图像可以使用 jQuery UI 的.draggable.拖动

我需要一个“垃圾桶”,当一个元素被拖入时,它会被删除。

示例:http://jsfiddle.net/KWdcU/3/(设置为删除所有元素,而不是拖入其中的元素)

代码

<div class ="box">
<div class="stack">one</div>
<div class="stack">two</div>
</div>
<div id="trash">trash</div>​



$(function() 
        $( ".stack" ).draggable();
);

$('#trash').droppable(
            over: function() 
             //alert('working!');
            $('.box').remove();
          
    );

【问题讨论】:

【参考方案1】:

您可以使用ui 元素的.draggable 属性传递给over 的回调函数,如docs 中指定的那样找到正在拖动的项目。像这样:

$(function() 
    $(".stack").draggable();

    $('#trash').droppable(
        over: function(event, ui) 
            ui.draggable.remove();
        
    );
);

Here's an updated jsFiddle。


从可用性的角度来看,我建议使用drop 事件而不是over 事件,因为无意中将项目拖到垃圾桶上会很烦人。

【讨论】:

谢谢,那是我的阅读理解失败,'drop' 的好主意。 ui.draggable.remove() 也可以(不带$(...) 我发现了这个错误:我尝试回答你的答案 0x800a138f - javascript 运行时错误:无法获取未定义或空引用的属性“删除”【参考方案2】:

最好使用 drop 而不是 over

$(function() 
    $(".stack").draggable();

    $('#trash').droppable(
        drop: function(event, ui) 
            $(ui.draggable).remove();
        
    );
);

【讨论】:

同意,drop 比 over 更加用户友好和自然【参考方案3】:

通过执行以下JS代码删除可放置区域中的元素:-

$(document).on('click', '.ui-draggable', function()
  if(confirm('Do you want to delete ?'))
    $(this).remove();
  
);

查看结果:

【讨论】:

以上是关于使用 .droppable 拖放到 div 中时,jQuery UI 删除元素的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Droppable:放在 div 之外?

JQuery Draggable + Droppable + Sortable

使用 jquery droppable,我如何复制 trello 将人物图像拖放到卡片上的行为,它捕捉到卡片的右下角?

如何使用jQuery Draggable和Droppable实现拖拽功能

从列表拖放到表 Jquery

如何使用jQuery Draggable和Droppable实现拖拽功能