【发布时间】:2020-05-12 19:53:40
【问题描述】:
我正在尝试解决在拖动到可拖动区域之外时立即触发dragend 事件的问题。例如,请注意以下视频中,将标签拖动到可拖动区域外时大约有 0.25 秒的延迟(当在可拖动区域内时,它会立即注册):https://gyazo.com/18d1afc32eb065d1f35896697ef0479e。
这里是 JSFiddle:http://jsfiddle.net/radonirinamaminiaina/zfnj5rv4/。
这个问题大约 7 年前在这里被问到:HTML5 dragend event firing immediately,但这似乎更像是一个浏览器限制,我认为我的问题有点不同。
有没有办法在将事件拖到可拖动区域之外时立即触发事件?比如在jfiddle的例子中,如果“This div is draggable”被拖到浏览器的左上角,让它零延迟地‘snap back’?
更新来自评论中的问题:这是我正在尝试做的一个示例,其中包含来自 Excel 数据透视表的 4s 视频:gyazo.com/3ccd1c3abd7f92d3410022a83b5c25b9。基本上,当用户在“拖动区域之外”拖动标签时,我希望能够立即删除该标签或触发显示该标签已被删除的动画。
【问题讨论】:
-
所以要明确一点,您是在要求禁用放置位置与其最终位置之间的平滑过渡?
-
@Kaiido 我想描述它的最佳方式是展示我的意思。这是我尝试从 Excel 中的数据透视表执行的操作的示例:gyazo.com/3ccd1c3abd7f92d3410022a83b5c25b9。基本上,当用户将标签拖到“拖动区域之外”以立即删除该标签或触发显示该标签已被删除的动画时。
-
为什么要听dragend事件?您应该通过将其委托给更大的父级(例如
document)来监听该区域之外的放置事件。 -
我们是在谈论用户将元素拖动到外部还是将其拖放到外部并拖放?
-
@DanMacák 把它丢在外面。
标签: javascript browser dom-events