我广泛利用HTML5本机拖动&下降,而且它几乎完全表现自己,一个小小的例外。HTML5拖放行为
我想什么时候拖过上突出显示我的dropzones。我最初试图通过戴上文档正文jQuery的听众,这样来实现:
$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});
与lightdz()和dimdz()改变页面上的所有dropzones的背景颜色样式属性,以使他们脱颖而出出。这没有奏效。只要拖动的对象进入页面上的子元素(如div容器),监听器就会将其标记为dragleave事件,并将下拉框变暗。
我解决此得到了应用听众页面上的所有可见元素,而不只是身体。当穿过一个元素与另一个元素之间的边界时,偶尔会有一些可见的闪烁,但看起来很好。
反正现在我已经改变lightdz()和dimdz(),使它们适用于快速的jQuery fadeTo()动画所有非dropzones。这看起来真棒当它的工作,并使其非常明显的用户他们可以和不能放下东西。麻烦的是当它在元素边界之间传递时,它应用淡入淡出动画。这比背景颜色的偶尔闪烁要明显得多,特别是因为如果对象很快被拖动到多个边界上,它会排列动画并使页面反复淡入淡出。
即使我不打扰fadeTo()动画,只是改变不透明度,它比背景颜色闪烁更明显,因为整个页面变化而不仅仅是dropzone元素。
有什么办法来引用整个页面为的的dragover和dragleave事件的目的的单个元素?否则,有什么办法可以检测到在浏览器窗口之外发生的拖放?如果我跳过dragleave事件,它看起来很好,但如果有任何对象被拖动到浏览器窗口上,然后掉到外面,整个页面将保持淡化状态。
似乎至少在一些浏览器上,这是event.originalEvent.pageX而不是event.pageX ... – 2012-03-01 06:04:08
不适用于歌剧和Firefox我的 – 2013-01-23 20:12:45
'.live'被depricated ..使用'.on'而不是http ://api.jquery.com/live/ – Lipis 2013-02-22 17:55:50