绑定本机html5 dragstart事件处理程序并使用jQuery访问dataTransfer

Sim*_*mon 16 jquery html5 drag-and-drop

这是有效的:

$(".my_dragging_class").each( makeDraggable($(this).get()[0]) );

var makeDraggable = function (el){
    el.draggable = 'true';
    el.addEventListener('dragstart', function(e){
                e.dataTransfer.effectAllowed = 'move';
                e.dataTransfer.setData('text/html', 'test');
                console.log('dragstart');
                }, 
            false);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$(".my_dragging_class").makeDraggable();

$.fn.makeDraggable(){
    $(this).attr('draggable','true');
    $(this).bind('dragstart', function(e){
                e.dataTransfer.effectAllowed = 'move';
                e.dataTransfer.setData('text/html', 'test');
                console.log('dragstart');
                }, 
            false);
}
Run Code Online (Sandbox Code Playgroud)

错误信息:我收到一个"e.dataTransfer未定义"为线e.dataTransfer.effectAllowed = 'move';.我的浏览器是FireFox 10.0.2

是否有可能以这种方式使用带有jQuery的dataTransfer?

rob*_*rtc 47

尝试:

$.fn.makeDraggable(){
    $(this).attr('draggable','true');
    $(this).bind('dragstart', function(e){
                e.originalEvent.dataTransfer.effectAllowed = 'move';
                e.originalEvent.dataTransfer.setData('text/html', 'test');
                console.log('dragstart');
                }, 
            false);
}
Run Code Online (Sandbox Code Playgroud)

jQuery的事件对象 不具有dataTransfer财产.


小智 6

jQuery的事件对象不具有dataTransfer属性...没错,但一个可以尝试:

jQuery.event.props.push('dataTransfer');
Run Code Online (Sandbox Code Playgroud)

kr,zara