Jquery 为什么主干';s事件对象是否缺少属性?
我正在开发一些拖放功能,并通过标准主干方式附加事件:Jquery 为什么主干';s事件对象是否缺少属性?,jquery,javascript-events,backbone.js,Jquery,Javascript Events,Backbone.js,我正在开发一些拖放功能,并通过标准主干方式附加事件: events: { 'dragenter': 'dragEnter', 'dragend': 'dragEnd' ...., ..... } 我在函数中注意到,传递给它的事件对象不包含html5规范中概述的某些属性 具体而言,dataTransferobj缺失 我创建了一个快速的演示。只要在上面拖动一个文件或其他东西,就能在日志中看到它 我的问题是为什么会发生这种情况?我翻遍了报纸,似乎找不到 主干事件实际上将事件绑定到您的Dom
events: {
'dragenter': 'dragEnter',
'dragend': 'dragEnd'
....,
.....
}
我在函数中注意到,传递给它的事件
对象不包含html5规范中概述的某些属性
具体而言,dataTransfer
obj缺失
我创建了一个快速的演示。只要在上面拖动一个文件或其他东西,就能在日志中看到它
我的问题是为什么会发生这种情况?我翻遍了报纸,似乎找不到 主干事件实际上将事件绑定到您的Dom库(jQuery、Zepto…),因此如果您想要可拖动的事件,就应该加载jqueryui如果您使用的是主干事件,主干会在实际事件的顶部放置一个层。 如果要访问原始事件,必须使用:event.originalEvent
在OriginaleEvent中,您可以找到dataTransfer。虽然它确实使用那些DOM操纵器绑定了事件,但简单地添加jqUI并不能解决问题,至少在我的测试中不会。因为dataTransfer是本机的,所以您可以通过回调来访问它:
dragEnter:function(e){dt=e.OriginaleEvent.dataTransfer}
这就是我所说的将事件绑定到jQueryAh的意思。甚至没有意识到存在originalEvent
。请尝试删除主干层以查看问题是否在jQuery自身中:$(“#dom元素”).bind(“dragenter”,函数(事件){console.log(“event”,event);})代码>@fguillen是的,正常的js事件绑定也可以工作。我只是好奇它为什么会发生。我不知道,主干看起来像是委托给了jQuery事件绑定,所以主干的事件系统应该和jQuery的事件系统一样好:/这是一个比已经被接受的答案好得多的答案