【发布时间】:2012-03-01 18:30:46
【问题描述】:
我正在尝试实现与 imgur.com 上相同的效果(将文件从桌面拖动到 imgur.com,您会看到一个很酷的叠加层)。感谢这篇文章,已经有了一个可行的解决方案:Event propagation, overlay and drag-and-drop events
但是:我发现解决方案相当不满意。 问题是 $(document).on('dragenter') 在悬停在子元素上时被多次触发。我正在寻找一个事件,当我进入视口时触发一次,当我离开视口时触发一次,这样我就可以在 dragenter 和 dragleave 上有一个干净的 $overlay.fadeIn() 和 .fadeOut()。
我用填充整个视口的透明元素解决了这个问题。然后我在那个透明元素而不是 $(document) 上调用 dragenter。然后用 $('*:visible').live('dragenter') 显示隐藏的和真实的叠加层。 $('#transparentOverlay').on('dragleave') 隐藏叠加层。相当 hacky 但它可以工作(至少在 safari/chrome/firefox 中)
但只是选择器 $('*:visible').live() 让我头疼...
谁有更好的建议?
【问题讨论】:
标签: javascript jquery upload drag