Javascript 向左拖动,然后向右拖动
当我把一个文件拖到我的窗口时,我希望显示一个覆盖,当文件被拖离窗口时,我希望删除覆盖Javascript 向左拖动,然后向右拖动,javascript,jquery,Javascript,Jquery,当我把一个文件拖到我的窗口时,我希望显示一个覆盖,当文件被拖离窗口时,我希望删除覆盖 $(window).on('dragleave', this.onDragLeave); $(window).on('dragenter', this.onDragEnter); p.onDragEnter = function(e) { console.log('ENTER'); }; p.onDragLeave = function(e) { console.log('LE
$(window).on('dragleave', this.onDragLeave);
$(window).on('dragenter', this.onDragEnter);
p.onDragEnter = function(e) {
console.log('ENTER');
};
p.onDragLeave = function(e) {
console.log('LEAVE');
};
上面的工作很好,当我进入和离开窗口时,它会正确记录
当我开始淡入淡出覆盖层时,问题开始出现:
p.onDragEnter = function(e) {
console.log('ENTER');
$('#drag-overlay').fadeIn();
};
p.onDragLeave = function(e) {
console.log('LEAVE');
$('#drag-overlay').fadeOut();
};
有了以上这些,它只是一次又一次地淡入淡出。我不知道发生了什么,就好像当覆盖层消失时,它会发射一个拖离,我不知道为什么
覆盖只是一个绝对div,宽度和高度为100%。问题在于,通过显示覆盖,您会导致被拖动的项目离开父项并拖动到覆盖中。然后隐藏覆盖会导致在父对象中触发拖动 幸运的是,解决方案很简单,可以在css中完成:
#drag-overlay
{
pointer-events: none;
...
}
有关有效解决方案,请参见
如果删除
指针事件:无
,则会得到相同的行为<代码>指针事件:无仅表示在覆盖上拖动时不会触发父ondragleave方法 请发一封信。您会更快地得到答案。谢谢,onDragEnter是我的方法名称,因此无需担心。“这很有效,谢谢。”潘思罗-太好了,很乐意帮忙