为了账号安全,请及时绑定邮箱和手机立即绑定

html5中的拖拽drop不是在盛放拖放元素的里面设置drop的监听?

html5中的拖拽drop不是在盛放拖放元素的里面设置drop的监听?

拉莫斯之舞 2018-11-14 13:10:10
我想将A拖到B中,用了HTML5 的拖拽方法A是被拖拽的元素,B是打算盛放拖拽的元素在a中设置了dragstart,dragend在b中设置了dragenter,dragleave这是没有什么疑惑的。但是对于drop的监听,本以为是在B,这个盛放拖拽元素上设置的监听,可是一直触发不了发现拖拽A,在A中松开鼠标的时候,可以触发A上的drop监听。难道不是在B中监听元素的放入这个动作吗?现在我将A拖入B再松开,触发的是dragenter,dragleave,dragend但是如果我拖动A,在A上松开,就可以触发了drop了,并且e.target是我放在A上的一个元素这是写的测试代码:刚刚测试了下Firefox上,貌似在B上是可以监听到Drop的,但是chrome上却不能!请问这个有解决办法吗?
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

dragElements.on('dragend',function (event) {

            elementDragged = null;

            console.log('dragend',this,event.originalEvent.target)

        });


        dropElements.on('dragover',function (e) {

            e.preventDefault();

            e.originalEvent.dataTransfer.dropEffect = 'move';

            console.log('dragover',this)

        });


        dropElements.on('drop dragdrop',function(event){

            alert('dropped');

            // console.log(event.originalEvent.dataTransfer.getData('text'))

        });


        dropElements.on('dragenter',function(event){

            event.preventDefault();

            $(this).html('drop now').css('background','blue');

        });


        dropElements.on('dragleave',function(){

            $(this).html('drop here').css('background','red');

        });

最后用jquery封装了下,就可以了。但是。。。jquery的event必须得转成原生的event才能拿到dataTransfer对象比较。。。难受

查看完整回答
反对 回复 2018-12-07
  • 1 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号