Свяжите собственный обработчик событий html5 dragstart и получите доступ к dataTransfer, используя jQuery - PullRequest
16 голосов
/ 05 марта 2012

Это работает:

$(".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);
}

Это НЕ работает:

$(".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);
}

Сообщение об ошибке: Я получаю 'e.dataTransfer не определен' для строки e.dataTransfer.effectAllowed = 'move';. Мой браузер FireFox 10.0.2

Можно ли использовать dataTransfer с jQuery таким образом?

Ответы [ 2 ]

47 голосов
/ 05 марта 2012

Попробуйте:

$.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);
}

Объект события jQuery не имеет свойства dataTransfer.

6 голосов
/ 04 декабря 2012

Объект события jQuery не имеет свойства dataTransfer ... true, но можно попробовать:

jQuery.event.props.push('dataTransfer');

kr, zara

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...